@rr0/ufoathome 0.132.0 → 0.134.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed-interview/InterviewMessages_es-BJHVnSkP.js +1 -0
- package/dist-embed-interview/InterviewMessages_fr-Dhtz904e.js +1 -0
- package/dist-embed-interview/InterviewMessages_it-D0Dff5zn.js +1 -0
- package/dist-embed-interview/rr0-interview.mjs +6 -6
- package/dist-embed-scene/rr0-scene.mjs +60 -58
- package/dist-embed-scene/sightingSchema-DfbuP60Y.js +1 -0
- package/dist-embed-sighting/{CoverageAssessor-CZfxbN9A.js → CoverageAssessor-Dd6oOWlq.js} +1 -1
- package/dist-embed-sighting/{SightingMessages_es-OXYzPf-m.js → SightingMessages_es-CxoccMw6.js} +1 -1
- package/dist-embed-sighting/SightingMessages_fr-CdqAz1Hz.js +1 -0
- package/dist-embed-sighting/{SightingMessages_it-B9f92W5s.js → SightingMessages_it-CkQVXDPv.js} +1 -1
- package/dist-embed-sighting/rr0-sighting.mjs +313 -254
- package/dist-embed-sighting/sightingSchema-DfbuP60Y.js +1 -0
- package/dist-embed-sighting-editor/{AdsbLolArchiveProvider-DOGYqP24.js → AdsbLolArchiveProvider-DU2U8NdB.js} +1 -1
- package/dist-embed-sighting-editor/{BeamEditor-rgFtq8yH.js → BeamEditor-CCsp2xr2.js} +1 -1
- package/dist-embed-sighting-editor/{BeamSystem-CGcP-5uL.js → BeamSystem-BnI9L86u.js} +1 -1
- package/dist-embed-sighting-editor/{BodyEditor-TjnivtCI.js → BodyEditor-DtBz9fVX.js} +2 -2
- package/dist-embed-sighting-editor/CaseEditorMessages_es-BrH54rIz.js +1 -0
- package/dist-embed-sighting-editor/CaseEditorMessages_fr-DF-qjRtx.js +1 -0
- package/dist-embed-sighting-editor/CaseEditorMessages_it-Cb_U9B3i.js +1 -0
- package/dist-embed-sighting-editor/{ContrailSystem-C7wqDUfk.js → ContrailSystem-DugiVtAv.js} +1 -1
- package/dist-embed-sighting-editor/{CoverageAssessor-BbvPELCG.js → CoverageAssessor-DXVjXoUX.js} +1 -1
- package/dist-embed-sighting-editor/GLTFLoader-DLQh4lKb.js +1 -0
- package/dist-embed-sighting-editor/{HeadlightSystem-Dyh8W52L.js → HeadlightSystem-BEWiubrn.js} +1 -1
- package/dist-embed-sighting-editor/{HynekAssessor-TsYamQ6r.js → HynekAssessor-Bc2SulU3.js} +1 -1
- package/dist-embed-sighting-editor/InterviewEditorElement-bUyn6irj.js +229 -0
- package/dist-embed-sighting-editor/InterviewMessages_en-CRvWVmlL.js +1 -0
- package/dist-embed-sighting-editor/InterviewMessages_es-BJHVnSkP.js +1 -0
- package/dist-embed-sighting-editor/InterviewMessages_fr-Dhtz904e.js +1 -0
- package/dist-embed-sighting-editor/InterviewMessages_it-D0Dff5zn.js +1 -0
- package/dist-embed-sighting-editor/{LaserBeam-BxHm8xkN.js → LaserBeam-B6u7y0-E.js} +1 -1
- package/dist-embed-sighting-editor/{LaunchEditor-DrBVJxSe.js → LaunchEditor-qoB8RSgQ.js} +1 -1
- package/dist-embed-sighting-editor/ModelSource-CnDfgMtY.js +1 -0
- package/dist-embed-sighting-editor/{ModelThumbnails-BXnPtOMG.js → ModelThumbnails-CYHW7hxV.js} +1 -1
- package/dist-embed-sighting-editor/{ModelViewer-CMxc0zPv.js → ModelViewer-BzHV3bjz.js} +1 -1
- package/dist-embed-sighting-editor/RailwaySystem-CzPTp4PW.js +41 -0
- package/dist-embed-sighting-editor/{RoadMarkings-BHKxo_8h.js → RoadMarkings-BWoz2Cuq.js} +1 -1
- package/dist-embed-sighting-editor/{SceneNames_es-BQyea_Xf.js → SceneNames_es-7RR79EmC.js} +1 -1
- package/dist-embed-sighting-editor/{SceneNames_fr-DKRWoM54.js → SceneNames_fr-Da_S9KXa.js} +1 -1
- package/dist-embed-sighting-editor/{SceneNames_it-BcASO5PP.js → SceneNames_it-BwFZROII.js} +1 -1
- package/dist-embed-sighting-editor/SightingEditorMessages_es-pgii85sY.js +12 -0
- package/dist-embed-sighting-editor/SightingEditorMessages_fr-BysKDyGf.js +12 -0
- package/dist-embed-sighting-editor/{SightingEditorMessages_it-BaBliW7B.js → SightingEditorMessages_it-DOnHDjjj.js} +2 -2
- package/dist-embed-sighting-editor/{SightingFileEditor-BoJcuWFQ.js → SightingFileEditor-LAzFduCJ.js} +18 -17
- package/dist-embed-sighting-editor/{TraceSystem-DMeO0tBV.js → TraceSystem-Dgxizn7s.js} +2 -2
- package/dist-embed-sighting-editor/{WaterSystem-BFrSxN_o.js → WaterSystem-Bv5uZSRK.js} +1 -1
- package/dist-embed-sighting-editor/interviewSchema-7rMvPyAl.js +1 -0
- package/dist-embed-sighting-editor/rr0-sighting-editor.mjs +1231 -552
- package/dist-embed-sighting-editor/sightingSchema-DfbuP60Y.js +1 -0
- package/dist-embed-sighting-editor/surroundingsSources-B1931yh4.js +1 -0
- package/dist-embed-sighting-editor/{trafficRuntime-DqMAn7zG.js → trafficRuntime-STzu7-Xp.js} +1 -1
- package/package.json +1 -1
- package/dist-embed-interview/InterviewMessages_es-CNKjrohj.js +0 -1
- package/dist-embed-interview/InterviewMessages_fr-BP99Pg7g.js +0 -1
- package/dist-embed-interview/InterviewMessages_it-DTIrw8wW.js +0 -1
- package/dist-embed-scene/sightingSchema-DZCs9lw3.js +0 -1
- package/dist-embed-sighting/SightingMessages_fr-ylqIoox7.js +0 -1
- package/dist-embed-sighting/sightingSchema-DZCs9lw3.js +0 -1
- package/dist-embed-sighting-editor/CaseEditorMessages_es-DwO2w2Vc.js +0 -1
- package/dist-embed-sighting-editor/CaseEditorMessages_fr-iFzha0wM.js +0 -1
- package/dist-embed-sighting-editor/CaseEditorMessages_it-CjdJSAvo.js +0 -1
- package/dist-embed-sighting-editor/GLTFLoader-DoH7iy3g.js +0 -1
- package/dist-embed-sighting-editor/InterviewEditorElement-BLlyEu8-.js +0 -100
- package/dist-embed-sighting-editor/InterviewMessages_en-yw5Qfw-6.js +0 -1
- package/dist-embed-sighting-editor/InterviewMessages_es-CNKjrohj.js +0 -1
- package/dist-embed-sighting-editor/InterviewMessages_fr-BP99Pg7g.js +0 -1
- package/dist-embed-sighting-editor/InterviewMessages_it-DTIrw8wW.js +0 -1
- package/dist-embed-sighting-editor/ModelSource-BUjV4b8R.js +0 -1
- package/dist-embed-sighting-editor/RailwaySystem-BEdXiuce.js +0 -41
- package/dist-embed-sighting-editor/SightingEditorMessages_es-D6t0QFbB.js +0 -12
- package/dist-embed-sighting-editor/SightingEditorMessages_fr-O5O1g-Ii.js +0 -12
- package/dist-embed-sighting-editor/interviewSchema-m_h5f8H0.js +0 -1
- package/dist-embed-sighting-editor/sightingSchema-DZCs9lw3.js +0 -1
- package/dist-embed-sighting-editor/surroundingsSources-DKH8MbhE.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{L as p,o as c,U as m,t as g,m as d,E as u,n as f,q as v}from"./rr0-sighting-editor.mjs";import{launchEditorMessages_en as h}from"./LaunchEditorMessages_en-BzymQ_VU.js";class i{static plumeValue(e){return t=>p.plumeOf(t)[e]}static plume(e,t){return{type:"number",key:`plume.${e}`,effective:i.plumeValue(e),...t}}static burn(e,t){return{type:"number",key:e,min:-3600,max:36e3,step:.1,unit:"s",scale:.001,label:t.label,hint:t.hint,group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"},effective:s=>t.ends(s.track??[])?.t}}static nextPlace(e){const t=e[e.length-1]??{t:0,lat:0,lng:0,altitudeKm:0},s=e[e.length-2]??t,a=(n,l=0)=>e.length>1?t[n]-s[n]:l;return{t:t.t+(e.length>1?a("t"):1e4),lat:t.lat+a("lat"),lng:t.lng+a("lng"),altitudeKm:Math.max(0,t.altitudeKm+a("altitudeKm"))}}static SET={kind:"launch",title:{en:"Launch",fr:"Lancement",es:"Lanzamiento",it:"Lancio"},parameters:[{type:"said",key:"title",label:{en:"Name",fr:"Nom",es:"Nombre",it:"Nome"},group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"text",key:"vehicle.mission",label:{en:"Mission",fr:"Mission",es:"Misión",it:"Missione"},placeholder:"Starlink Group 10-49",group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"number",key:"vehicle.engine.thrustKN",min:1,max:1e5,step:1,unit:"kN",label:{en:"Thrust (vacuum)",fr:"Poussée (dans le vide)",es:"Empuje (en el vacío)",it:"Spinta (nel vuoto)"},hint:{en:"Merlin Vacuum 934, RL10 110, a solid booster several thousand. With the specific impulse, it sets how much exhaust leaves each second.",fr:"Merlin Vacuum 934, RL10 110, un booster à poudre plusieurs milliers. Avec l'impulsion spécifique, elle fixe le débit d'échappement.",es:"Merlin Vacuum 934, RL10 110, un propulsor sólido varios miles. Con el impulso específico, fija el caudal de escape.",it:"Merlin Vacuum 934, RL10 110, un booster solido diverse migliaia. Con l'impulso specifico, fissa la portata dello scarico."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"number",key:"vehicle.engine.specificImpulseS",min:100,max:500,step:1,unit:"s",label:{en:"Specific impulse (vacuum)",fr:"Impulsion spécifique (dans le vide)",es:"Impulso específico (en el vacío)",it:"Impulso specifico (nel vuoto)"},hint:{en:"Times 9.81 m/s² it is the exhaust velocity, which sets how fast the exhaust spreads round the stage: 348 s is 3.4 km/s.",fr:"Multipliée par 9,81 m/s², c'est la vitesse d'éjection, qui fixe la vitesse à laquelle l'échappement s'étale autour de l'étage : 348 s font 3,4 km/s.",es:"Multiplicado por 9,81 m/s² es la velocidad de escape, que fija la rapidez con que el escape se extiende alrededor de la etapa: 348 s son 3,4 km/s.",it:"Moltiplicato per 9,81 m/s² è la velocità di scarico, che fissa quanto in fretta lo scarico si allarga attorno allo stadio: 348 s sono 3,4 km/s."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"choice",key:"vehicle.engine.propellant",label:{en:"Propellant",fr:"Ergols",es:"Propelentes",it:"Propellenti"},hint:{en:"What the exhaust is made of decides how much of it turns into particles that scatter light.",fr:"Ce dont l'échappement est fait décide quelle part devient des particules qui diffusent la lumière.",es:"De qué está hecho el escape decide qué parte se vuelve partículas que difunden la luz.",it:"Di cosa è fatto lo scarico decide quanta parte diventa particelle che diffondono la luce."},choices:[{value:"rp1-lox",label:{en:"Kerosene and oxygen",fr:"Kérosène et oxygène",es:"Queroseno y oxígeno",it:"Cherosene e ossigeno"}},{value:"methane-lox",label:{en:"Methane and oxygen",fr:"Méthane et oxygène",es:"Metano y oxígeno",it:"Metano e ossigeno"}},{value:"hydrogen-lox",label:{en:"Hydrogen and oxygen",fr:"Hydrogène et oxygène",es:"Hidrógeno y oxígeno",it:"Idrogeno e ossigeno"}},{value:"hypergolic",label:{en:"Hypergolic",fr:"Hypergolique",es:"Hipergólico",it:"Ipergolico"}},{value:"solid",label:{en:"Solid",fr:"Poudre",es:"Sólido",it:"Solido"}}],group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},i.burn("burnFromT",{label:{en:"Engine start",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"},hint:{en:"When the engine started, in seconds of the recording; it may be before it. Empty: the first point of the path.",fr:"Quand le moteur s'est allumé, en secondes de l'enregistrement ; avant lui si besoin. Vide : le premier point du chemin.",es:"Cuándo se encendió el motor, en segundos de la grabación; puede ser antes. Vacío: el primer punto de la trayectoria.",it:"Quando si è acceso il motore, in secondi della registrazione; può essere prima. Vuoto: il primo punto del percorso."},ends:e=>e[0]}),i.burn("burnUntilT",{label:{en:"Engine cut-off",fr:"Extinction du moteur",es:"Apagado del motor",it:"Spegnimento del motore"},hint:{en:"When the engine stopped, in seconds of the recording. Empty: the last point of the path. Nothing is let go after it.",fr:"Quand le moteur s'est éteint, en secondes de l'enregistrement. Vide : le dernier point du chemin. Rien n'est lâché après.",es:"Cuándo se apagó el motor, en segundos de la grabación. Vacío: el último punto de la trayectoria. Nada se suelta después.",it:"Quando si è spento il motore, in secondi della registrazione. Vuoto: l'ultimo punto del percorso. Dopo non si rilascia nulla."},ends:e=>e[e.length-1]}),i.plume("exhaustKgPerS",{min:.1,max:1e5,step:.1,unit:"kg/s",label:{en:"Exhaust flow",fr:"Débit d'échappement",es:"Caudal de escape",it:"Portata di scarico"},hint:{en:"How much exhaust leaves the engine each second: how bright the plume is. Thrust over exhaust velocity when the engine is stated.",fr:"La masse d'échappement qui sort du moteur chaque seconde : la luminosité du panache. La poussée sur la vitesse d'éjection quand le moteur est donné.",es:"La masa de escape que sale del motor cada segundo: el brillo de la estela. El empuje sobre la velocidad de escape cuando se da el motor.",it:"La massa di scarico che esce dal motore ogni secondo: la luminosità della scia. La spinta sulla velocità di scarico quando il motore è dato."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("condensedShare",{min:0,max:1,step:.01,label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},hint:{en:"The share of the exhaust that ends up as particles that scatter the Sun's light. Nobody has measured it for a launch: the one number to fit against a photograph.",fr:"La part de l'échappement qui devient des particules diffusant la lumière du Soleil. Personne ne l'a mesurée pour un lancement : le seul nombre à caler sur une photographie.",es:"La parte del escape que acaba como partículas que difunden la luz del Sol. Nadie la ha medido para un lanzamiento: el único número que ajustar con una fotografía.",it:"La parte dello scarico che diventa particelle che diffondono la luce del Sole. Nessuno l'ha misurata per un lancio: l'unico numero da tarare su una fotografia."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("particleRadiusUm",{min:.05,max:5,step:.05,unit:"µm",label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("lifetimeS",{min:10,max:3600,step:10,unit:"s",label:{en:"Trail lifetime",fr:"Durée de la traînée",es:"Duración de la estela",it:"Durata della scia"},hint:{en:"How long the narrow trail lasts before the particles have gone.",fr:"Combien de temps la traînée étroite dure avant que les particules aient disparu.",es:"Cuánto dura la estela estrecha antes de que las partículas hayan desaparecido.",it:"Quanto dura la scia stretta prima che le particelle siano sparite."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("expansionKmPerS",{min:0,max:5,step:.01,unit:"km/s",label:{en:"Trail spreading",fr:"Étalement de la traînée",es:"Expansión de la estela",it:"Espansione della scia"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("initialRadiusKm",{min:0,max:50,step:.1,unit:"km",label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("collarShare",{min:0,max:1,step:.01,label:{en:"Share in the collar",fr:"Part dans la collerette",es:"Parte en el collar",it:"Parte nel collare"},hint:{en:"The collar is the exhaust just let go, which spreads fast into a wide short-lived shell round the stage; the rest stays behind as the narrow trail.",fr:"La collerette est l'échappement qui vient d'être lâché, qui s'étale vite en une coque large et brève autour de l'étage ; le reste demeure derrière en traînée étroite.",es:"El collar es el escape recién soltado, que se extiende rápido en una envoltura ancha y breve alrededor de la etapa; el resto queda detrás como estela estrecha.",it:"Il collare è lo scarico appena rilasciato, che si allarga in fretta in un guscio largo e breve attorno allo stadio; il resto resta dietro come scia stretta."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),i.plume("collarExpansionKmPerS",{min:0,max:10,step:.05,unit:"km/s",label:{en:"Collar spreading",fr:"Étalement de la collerette",es:"Expansión del collar",it:"Espansione del collare"},hint:{en:"How fast the collar widens: three quarters of the exhaust velocity when the engine is stated.",fr:"La vitesse à laquelle la collerette s'élargit : les trois quarts de la vitesse d'éjection quand le moteur est donné.",es:"La rapidez con que el collar se ensancha: tres cuartos de la velocidad de escape cuando se da el motor.",it:"Quanto in fretta il collare si allarga: tre quarti della velocità di scarico quando il motore è dato."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),i.plume("collarLifetimeS",{min:1,max:300,step:1,unit:"s",label:{en:"Collar lifetime",fr:"Durée de la collerette",es:"Duración del collar",it:"Durata del collare"},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}})]};static PLACE={kind:"launch-place",title:{en:"Place of the path",fr:"Point du chemin",es:"Punto de la trayectoria",it:"Punto del percorso"},parameters:[{type:"number",key:"t",min:-3600,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Time",fr:"Instant",es:"Instante",it:"Istante"},hint:{en:"Seconds of the recording; negative before it began: a stage seen minutes after its launch was already high when the recording started.",fr:"Secondes de l'enregistrement ; négatives avant son début : un étage vu des minutes après son lancement était déjà haut quand l'enregistrement a commencé.",es:"Segundos de la grabación; negativos antes de que empezara: una etapa vista minutos después de su lanzamiento ya estaba alta cuando empezó la grabación.",it:"Secondi della registrazione; negativi prima del suo inizio: uno stadio visto minuti dopo il lancio era già alto quando la registrazione è iniziata."}},{type:"number",key:"lat",min:-90,max:90,step:1e-4,unit:"°",required:!0,label:{en:"Latitude",fr:"Latitude",es:"Latitud",it:"Latitudine"}},{type:"number",key:"lng",min:-180,max:180,step:1e-4,unit:"°",required:!0,label:{en:"Longitude",fr:"Longitude",es:"Longitud",it:"Longitudine"}},{type:"number",key:"altitudeKm",min:0,max:2e3,step:.1,unit:"km",required:!0,label:{en:"Altitude",fr:"Altitude",es:"Altitud",it:"Altitudine"}}]};static publish(){c.publish(i.SET)}}class r{constructor(e,t,s){this.container=e,this.host=t,this.language=s,c.of("launch")||i.publish(),this.render(),this.setLanguage(s)}messages=h;languageToken=0;currentId;form;list;places;placeForm;placeIndex=0;language;shown=[];async setLanguage(e){const t=++this.languageToken;this.language=e;const s=m.includes(e)?e:"en",a=s==="en"?h:await g(s);t===this.languageToken&&(this.messages=a,this.render(),this.sync())}sync(){const e=this.launches;this.shown=[...e],e.some(a=>a.id===this.currentId)||(this.currentId=e[0]?.id),this.list?.setItems(e.map(a=>({id:a.id,label:this.labelOf(a)})),this.currentId),this.syncAddState();const t=this.current;if(this.element("launch-fields").hidden=t===void 0,!t)return;this.syncPlaces(t);const s=c.of("launch");this.form??=new d(this.element("launch-parameters"),this.language,"",{said:()=>this.host.said(),writingLanguage:()=>this.host.writingLanguage()}),this.form.show(s,t,()=>this.written())}refresh(){this.syncAddState();const e=this.launches;e.length===this.shown.length&&e.every((t,s)=>t===this.shown[s])||this.sync()}syncAddState(){const e=this.startOfNew()!==void 0;this.list?.setAddState(e,e?void 0:this.messages.addLaunchNowhere)}get current(){return this.launches.find(e=>e.id===this.currentId)}show(e){this.currentId=e,this.placeIndex=0,this.sync()}render(){const e=this.messages;this.form=void 0,this.container.innerHTML=`<div class="launch-editor">
|
|
1
|
+
import{L as p,q as c,U as m,v as g,o as d,n as u,p as f,u as v}from"./rr0-sighting-editor.mjs";import{launchEditorMessages_en as h}from"./LaunchEditorMessages_en-BzymQ_VU.js";class i{static plumeValue(e){return t=>p.plumeOf(t)[e]}static plume(e,t){return{type:"number",key:`plume.${e}`,effective:i.plumeValue(e),...t}}static burn(e,t){return{type:"number",key:e,min:-3600,max:36e3,step:.1,unit:"s",scale:.001,label:t.label,hint:t.hint,group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"},effective:s=>t.ends(s.track??[])?.t}}static nextPlace(e){const t=e[e.length-1]??{t:0,lat:0,lng:0,altitudeKm:0},s=e[e.length-2]??t,a=(n,l=0)=>e.length>1?t[n]-s[n]:l;return{t:t.t+(e.length>1?a("t"):1e4),lat:t.lat+a("lat"),lng:t.lng+a("lng"),altitudeKm:Math.max(0,t.altitudeKm+a("altitudeKm"))}}static SET={kind:"launch",title:{en:"Launch",fr:"Lancement",es:"Lanzamiento",it:"Lancio"},parameters:[{type:"said",key:"title",label:{en:"Name",fr:"Nom",es:"Nombre",it:"Nome"},group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"text",key:"vehicle.mission",label:{en:"Mission",fr:"Mission",es:"Misión",it:"Missione"},placeholder:"Starlink Group 10-49",group:{en:"Vehicle",fr:"Lanceur",es:"Lanzador",it:"Lanciatore"}},{type:"number",key:"vehicle.engine.thrustKN",min:1,max:1e5,step:1,unit:"kN",label:{en:"Thrust (vacuum)",fr:"Poussée (dans le vide)",es:"Empuje (en el vacío)",it:"Spinta (nel vuoto)"},hint:{en:"Merlin Vacuum 934, RL10 110, a solid booster several thousand. With the specific impulse, it sets how much exhaust leaves each second.",fr:"Merlin Vacuum 934, RL10 110, un booster à poudre plusieurs milliers. Avec l'impulsion spécifique, elle fixe le débit d'échappement.",es:"Merlin Vacuum 934, RL10 110, un propulsor sólido varios miles. Con el impulso específico, fija el caudal de escape.",it:"Merlin Vacuum 934, RL10 110, un booster solido diverse migliaia. Con l'impulso specifico, fissa la portata dello scarico."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"number",key:"vehicle.engine.specificImpulseS",min:100,max:500,step:1,unit:"s",label:{en:"Specific impulse (vacuum)",fr:"Impulsion spécifique (dans le vide)",es:"Impulso específico (en el vacío)",it:"Impulso specifico (nel vuoto)"},hint:{en:"Times 9.81 m/s² it is the exhaust velocity, which sets how fast the exhaust spreads round the stage: 348 s is 3.4 km/s.",fr:"Multipliée par 9,81 m/s², c'est la vitesse d'éjection, qui fixe la vitesse à laquelle l'échappement s'étale autour de l'étage : 348 s font 3,4 km/s.",es:"Multiplicado por 9,81 m/s² es la velocidad de escape, que fija la rapidez con que el escape se extiende alrededor de la etapa: 348 s son 3,4 km/s.",it:"Moltiplicato per 9,81 m/s² è la velocità di scarico, che fissa quanto in fretta lo scarico si allarga attorno allo stadio: 348 s sono 3,4 km/s."},group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},{type:"choice",key:"vehicle.engine.propellant",label:{en:"Propellant",fr:"Ergols",es:"Propelentes",it:"Propellenti"},hint:{en:"What the exhaust is made of decides how much of it turns into particles that scatter light.",fr:"Ce dont l'échappement est fait décide quelle part devient des particules qui diffusent la lumière.",es:"De qué está hecho el escape decide qué parte se vuelve partículas que difunden la luz.",it:"Di cosa è fatto lo scarico decide quanta parte diventa particelle che diffondono la luce."},choices:[{value:"rp1-lox",label:{en:"Kerosene and oxygen",fr:"Kérosène et oxygène",es:"Queroseno y oxígeno",it:"Cherosene e ossigeno"}},{value:"methane-lox",label:{en:"Methane and oxygen",fr:"Méthane et oxygène",es:"Metano y oxígeno",it:"Metano e ossigeno"}},{value:"hydrogen-lox",label:{en:"Hydrogen and oxygen",fr:"Hydrogène et oxygène",es:"Hidrógeno y oxígeno",it:"Idrogeno e ossigeno"}},{value:"hypergolic",label:{en:"Hypergolic",fr:"Hypergolique",es:"Hipergólico",it:"Ipergolico"}},{value:"solid",label:{en:"Solid",fr:"Poudre",es:"Sólido",it:"Solido"}}],group:{en:"Engine",fr:"Moteur",es:"Motor",it:"Motore"}},i.burn("burnFromT",{label:{en:"Engine start",fr:"Allumage du moteur",es:"Encendido del motor",it:"Accensione del motore"},hint:{en:"When the engine started, in seconds of the recording; it may be before it. Empty: the first point of the path.",fr:"Quand le moteur s'est allumé, en secondes de l'enregistrement ; avant lui si besoin. Vide : le premier point du chemin.",es:"Cuándo se encendió el motor, en segundos de la grabación; puede ser antes. Vacío: el primer punto de la trayectoria.",it:"Quando si è acceso il motore, in secondi della registrazione; può essere prima. Vuoto: il primo punto del percorso."},ends:e=>e[0]}),i.burn("burnUntilT",{label:{en:"Engine cut-off",fr:"Extinction du moteur",es:"Apagado del motor",it:"Spegnimento del motore"},hint:{en:"When the engine stopped, in seconds of the recording. Empty: the last point of the path. Nothing is let go after it.",fr:"Quand le moteur s'est éteint, en secondes de l'enregistrement. Vide : le dernier point du chemin. Rien n'est lâché après.",es:"Cuándo se apagó el motor, en segundos de la grabación. Vacío: el último punto de la trayectoria. Nada se suelta después.",it:"Quando si è spento il motore, in secondi della registrazione. Vuoto: l'ultimo punto del percorso. Dopo non si rilascia nulla."},ends:e=>e[e.length-1]}),i.plume("exhaustKgPerS",{min:.1,max:1e5,step:.1,unit:"kg/s",label:{en:"Exhaust flow",fr:"Débit d'échappement",es:"Caudal de escape",it:"Portata di scarico"},hint:{en:"How much exhaust leaves the engine each second: how bright the plume is. Thrust over exhaust velocity when the engine is stated.",fr:"La masse d'échappement qui sort du moteur chaque seconde : la luminosité du panache. La poussée sur la vitesse d'éjection quand le moteur est donné.",es:"La masa de escape que sale del motor cada segundo: el brillo de la estela. El empuje sobre la velocidad de escape cuando se da el motor.",it:"La massa di scarico che esce dal motore ogni secondo: la luminosità della scia. La spinta sulla velocità di scarico quando il motore è dato."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("condensedShare",{min:0,max:1,step:.01,label:{en:"Share that scatters",fr:"Part qui diffuse",es:"Parte que difunde",it:"Parte che diffonde"},hint:{en:"The share of the exhaust that ends up as particles that scatter the Sun's light. Nobody has measured it for a launch: the one number to fit against a photograph.",fr:"La part de l'échappement qui devient des particules diffusant la lumière du Soleil. Personne ne l'a mesurée pour un lancement : le seul nombre à caler sur une photographie.",es:"La parte del escape que acaba como partículas que difunden la luz del Sol. Nadie la ha medido para un lanzamiento: el único número que ajustar con una fotografía.",it:"La parte dello scarico che diventa particelle che diffondono la luce del Sole. Nessuno l'ha misurata per un lancio: l'unico numero da tarare su una fotografia."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("particleRadiusUm",{min:.05,max:5,step:.05,unit:"µm",label:{en:"Particle radius",fr:"Rayon des particules",es:"Radio de las partículas",it:"Raggio delle particelle"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("lifetimeS",{min:10,max:3600,step:10,unit:"s",label:{en:"Trail lifetime",fr:"Durée de la traînée",es:"Duración de la estela",it:"Durata della scia"},hint:{en:"How long the narrow trail lasts before the particles have gone.",fr:"Combien de temps la traînée étroite dure avant que les particules aient disparu.",es:"Cuánto dura la estela estrecha antes de que las partículas hayan desaparecido.",it:"Quanto dura la scia stretta prima che le particelle siano sparite."},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("expansionKmPerS",{min:0,max:5,step:.01,unit:"km/s",label:{en:"Trail spreading",fr:"Étalement de la traînée",es:"Expansión de la estela",it:"Espansione della scia"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("initialRadiusKm",{min:0,max:50,step:.1,unit:"km",label:{en:"Radius at release",fr:"Rayon au lâcher",es:"Radio al soltar",it:"Raggio al rilascio"},group:{en:"Plume",fr:"Panache",es:"Estela",it:"Scia"}}),i.plume("collarShare",{min:0,max:1,step:.01,label:{en:"Share in the collar",fr:"Part dans la collerette",es:"Parte en el collar",it:"Parte nel collare"},hint:{en:"The collar is the exhaust just let go, which spreads fast into a wide short-lived shell round the stage; the rest stays behind as the narrow trail.",fr:"La collerette est l'échappement qui vient d'être lâché, qui s'étale vite en une coque large et brève autour de l'étage ; le reste demeure derrière en traînée étroite.",es:"El collar es el escape recién soltado, que se extiende rápido en una envoltura ancha y breve alrededor de la etapa; el resto queda detrás como estela estrecha.",it:"Il collare è lo scarico appena rilasciato, che si allarga in fretta in un guscio largo e breve attorno allo stadio; il resto resta dietro come scia stretta."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),i.plume("collarExpansionKmPerS",{min:0,max:10,step:.05,unit:"km/s",label:{en:"Collar spreading",fr:"Étalement de la collerette",es:"Expansión del collar",it:"Espansione del collare"},hint:{en:"How fast the collar widens: three quarters of the exhaust velocity when the engine is stated.",fr:"La vitesse à laquelle la collerette s'élargit : les trois quarts de la vitesse d'éjection quand le moteur est donné.",es:"La rapidez con que el collar se ensancha: tres cuartos de la velocidad de escape cuando se da el motor.",it:"Quanto in fretta il collare si allarga: tre quarti della velocità di scarico quando il motore è dato."},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}}),i.plume("collarLifetimeS",{min:1,max:300,step:1,unit:"s",label:{en:"Collar lifetime",fr:"Durée de la collerette",es:"Duración del collar",it:"Durata del collare"},group:{en:"Collar",fr:"Collerette",es:"Collar",it:"Collare"}})]};static PLACE={kind:"launch-place",title:{en:"Place of the path",fr:"Point du chemin",es:"Punto de la trayectoria",it:"Punto del percorso"},parameters:[{type:"number",key:"t",min:-3600,max:36e3,step:.1,unit:"s",scale:.001,required:!0,label:{en:"Time",fr:"Instant",es:"Instante",it:"Istante"},hint:{en:"Seconds of the recording; negative before it began: a stage seen minutes after its launch was already high when the recording started.",fr:"Secondes de l'enregistrement ; négatives avant son début : un étage vu des minutes après son lancement était déjà haut quand l'enregistrement a commencé.",es:"Segundos de la grabación; negativos antes de que empezara: una etapa vista minutos después de su lanzamiento ya estaba alta cuando empezó la grabación.",it:"Secondi della registrazione; negativi prima del suo inizio: uno stadio visto minuti dopo il lancio era già alto quando la registrazione è iniziata."}},{type:"number",key:"lat",min:-90,max:90,step:1e-4,unit:"°",required:!0,label:{en:"Latitude",fr:"Latitude",es:"Latitud",it:"Latitudine"}},{type:"number",key:"lng",min:-180,max:180,step:1e-4,unit:"°",required:!0,label:{en:"Longitude",fr:"Longitude",es:"Longitud",it:"Longitudine"}},{type:"number",key:"altitudeKm",min:0,max:2e3,step:.1,unit:"km",required:!0,label:{en:"Altitude",fr:"Altitude",es:"Altitud",it:"Altitudine"}}]};static publish(){c.publish(i.SET)}}class r{constructor(e,t,s){this.container=e,this.host=t,this.language=s,c.of("launch")||i.publish(),this.render(),this.setLanguage(s)}messages=h;languageToken=0;currentId;form;list;places;placeForm;placeIndex=0;language;shown=[];async setLanguage(e){const t=++this.languageToken;this.language=e;const s=m.includes(e)?e:"en",a=s==="en"?h:await g(s);t===this.languageToken&&(this.messages=a,this.render(),this.sync())}sync(){const e=this.launches;this.shown=[...e],e.some(a=>a.id===this.currentId)||(this.currentId=e[0]?.id),this.list?.setItems(e.map(a=>({id:a.id,label:this.labelOf(a)})),this.currentId),this.syncAddState();const t=this.current;if(this.element("launch-fields").hidden=t===void 0,!t)return;this.syncPlaces(t);const s=c.of("launch");this.form??=new d(this.element("launch-parameters"),this.language,"",{said:()=>this.host.said(),writingLanguage:()=>this.host.writingLanguage()}),this.form.show(s,t,()=>this.written())}refresh(){this.syncAddState();const e=this.launches;e.length===this.shown.length&&e.every((t,s)=>t===this.shown[s])||this.sync()}syncAddState(){const e=this.startOfNew()!==void 0;this.list?.setAddState(e,e?void 0:this.messages.addLaunchNowhere)}get current(){return this.launches.find(e=>e.id===this.currentId)}show(e){this.currentId=e,this.placeIndex=0,this.sync()}render(){const e=this.messages;this.form=void 0,this.container.innerHTML=`<div class="launch-editor">
|
|
2
2
|
<p class="launch-intro">${e.intro}</p>
|
|
3
3
|
<div id="launch-list"></div>
|
|
4
4
|
<div id="launch-fields" class="launch-fields">
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as d,Y as c,Z as l,$ as f,a0 as m,a1 as u,a2 as w,a3 as g,a4 as y,a5 as M,a6 as S,a7 as v,a8 as O}from"./rr0-sighting-editor.mjs";class h{static key(e){return"url"in e?`url:${e.url}|${e.headingOffsetDeg??0}`:"shape"in e?`shape:${e.shape}`:`decor:${e.decorKind}`}static async build(e){const a=new d;if("url"in e){const s=await c(e.url);s.rotation.y=-(e.headingOffsetDeg??0)*Math.PI/180,a.add(s)}else"shape"in e?a.add(h.shapeOf(e.shape)):a.add(l.build({id:"preview",kind:e.decorKind,eastM:0,northM:0},!1));return a}static shapeOf(e){if(e==="figure")return l.build({id:"preview",kind:"entity",eastM:0,northM:0},!1);const a=new f(m.unitGeometry(e),new u({color:13158608,roughness:.5,metalness:0}));return e==="ellipsoid"&&a.scale.set(1,.55,1),a}static dispose(e){e.traverse(a=>{const s=a;if(s.isMesh){s.geometry?.dispose();for(const t of[s.material].flat())t.dispose()}})}static stage(e,a){const s=new w().setFromObject(e);if(s.isEmpty())return;const t=s.getBoundingSphere(new g),r=new d;e.position.sub(t.center),r.add(e);const n=new y;n.add(r),n.add(new M(16777215,6715272,1.6));const o=new S(16777215,2.5);o.position.set(1,2,1.5),n.add(o);const i=new v(30,a,t.radius*.05,t.radius*20),p=t.radius/Math.sin(i.fov*Math.PI/360)*1.05;return i.position.copy(new O(.55,.3,-.78).normalize().multiplyScalar(p)),i.lookAt(0,0,0),{scene:n,camera:i,pivot:r}}}export{h as M};
|
package/dist-embed-sighting-editor/{ModelThumbnails-BXnPtOMG.js → ModelThumbnails-CYHW7hxV.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Q as c}from"./rr0-sighting-editor.mjs";import{M as i}from"./ModelSource-CnDfgMtY.js";class l{static SIZE_PX={width:192,height:144};static cache=new Map;static queue=Promise.resolve();static pending=0;static renderer;static of(r){const t=i.key(r);let e=this.cache.get(t);return e||(this.pending++,e=this.queue.then(()=>this.draw(r)).catch(()=>{}).finally(()=>{--this.pending===0&&this.release()}),this.queue=e,this.cache.set(t,e)),e}static async draw(r){const t=await i.build(r);try{const{width:e,height:n}=this.SIZE_PX,a=i.stage(t,e/n);if(!a)return;const s=this.renderer??=new c({antialias:!0,alpha:!0,preserveDrawingBuffer:!0});return s.setSize(e,n,!1),s.setClearColor(0,0),s.render(a.scene,a.camera),s.domElement.toDataURL("image/png")}finally{i.dispose(t)}}static release(){this.renderer?.dispose(),this.renderer?.forceContextLoss(),this.renderer=void 0}}export{l as ModelThumbnails};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Q as h}from"./rr0-sighting-editor.mjs";import{M as c}from"./ModelSource-CnDfgMtY.js";class a{constructor(t,e){this.container=t,this.source=e,this.canvas=document.createElement("canvas"),this.canvas.className="model-live",this.canvas.style.cssText="position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab;display:none",this.canvas.addEventListener("pointerdown",s=>this.press(s)),this.canvas.addEventListener("pointermove",s=>this.move(s)),this.canvas.addEventListener("pointerup",()=>this.release()),this.canvas.addEventListener("pointercancel",()=>this.release())}static renderer;static SPIN_RAD_PER_S=.7;static DRAG_RAD_PER_PX=.012;static CLICK_TOLERANCE_PX=4;static current;object;stage;frame=0;stopped=!1;last=0;dragging;draggedPastClick=!1;canvas;static show(t,e){a.current?.stop();const s=new a(t,e);return a.current=s,s.start(),s}static end(){a.current?.stop(),a.current=void 0,a.renderer?.dispose(),a.renderer?.forceContextLoss(),a.renderer=void 0}consumeDrag(){const t=this.draggedPastClick;return this.draggedPastClick=!1,t}get active(){return!this.stopped}stop(){this.stopped=!0,cancelAnimationFrame(this.frame),this.canvas.remove(),this.object&&c.dispose(this.object),this.object=void 0,a.current===this&&(a.current=void 0)}async start(){try{const t=await c.build(this.source);if(this.stopped){c.dispose(t);return}this.object=t;const{width:e,height:s}=this.container.getBoundingClientRect(),i=e>0&&s>0?e/s:4/3;if(this.stage=c.stage(t,i),!this.stage)return;(a.renderer??=new h({antialias:!0,alpha:!0})).setClearColor(0,0),this.container.append(this.canvas),this.canvas.style.display="block",this.last=performance.now(),this.tick()}catch{}}tick=()=>{if(this.stopped||!this.stage)return;const t=performance.now(),e=Math.min(.1,(t-this.last)/1e3);this.last=t,this.dragging||(this.stage.pivot.rotation.y+=a.SPIN_RAD_PER_S*e);const s=a.renderer,{width:i,height:n}=this.canvas.getBoundingClientRect(),r=Math.min(2,window.devicePixelRatio||1);(this.canvas.width!==Math.round(i*r)||this.canvas.height!==Math.round(n*r))&&(s.setPixelRatio(r),s.setSize(i,n,!1),this.canvas.width=Math.round(i*r),this.canvas.height=Math.round(n*r),this.stage.camera.aspect=i/Math.max(1,n),this.stage.camera.updateProjectionMatrix()),s.render(this.stage.scene,this.stage.camera);const o=this.canvas.getContext("2d");o?.clearRect(0,0,this.canvas.width,this.canvas.height),o?.drawImage(s.domElement,0,0,this.canvas.width,this.canvas.height),this.frame=requestAnimationFrame(this.tick)};press(t){this.dragging={x:t.clientX,y:t.clientY,moved:!1},this.canvas.setPointerCapture(t.pointerId),this.canvas.style.cursor="grabbing"}move(t){const e=this.dragging;if(!e||!this.stage)return;const s=t.clientX-e.x,i=t.clientY-e.y;!e.moved&&Math.hypot(s,i)<a.CLICK_TOLERANCE_PX||(e.moved=!0,this.draggedPastClick=!0,this.stage.pivot.rotation.y+=s*a.DRAG_RAD_PER_PX,this.stage.pivot.rotation.x=Math.max(-1.4,Math.min(1.4,this.stage.pivot.rotation.x-i*a.DRAG_RAD_PER_PX)),e.x=t.clientX,e.y=t.clientY)}release(){this.dragging=void 0,this.canvas.style.cursor="grab"}}export{a as ModelViewer};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{X as F,a1 as P,ae as H,af as w,ai as K,ak as N,$ as U,al as k}from"./rr0-sighting-editor.mjs";class b{static HOLLOW_M=1;static COVERED_M=3;static WINDOW_M=30;static SAMPLE_M=4;static MAX_GRADE={rail:.025,highSpeed:.035,subway:.04,light_rail:.06,tram:.08,funicular:1/0};static heights(t,n,e){const s=t.map(a=>a.level===0),o=t.map((a,l)=>s[l]?b.targets(a,n,e):[]),c=t.map((a,l)=>s[l]?b.samples(a,o[l]):[]),r=new Map;t.forEach((a,l)=>{if(s[l])for(const M of b.ends(a)){const h=b.key(M),d=r.get(h);d?d.push(l):r.set(h,[l])}});const p=a=>{const l=r.get(b.key(a));if(l)return b.median(l.flatMap(M=>c[M]),a)};return t.map((a,l)=>{if(s[l]){const M=[...new Set([l,...b.ends(a).flatMap(g=>r.get(b.key(g))??[])])].flatMap(g=>c[g]),h=a.centre.map((g,D)=>b.median(M,g)??o[l][D]),[d,L]=b.ends(a);return h[0]=p(d)??h[0],h[h.length-1]=p(L)??h[h.length-1],b.graded(h,a.along,a.highSpeed?b.MAX_GRADE.highSpeed:b.MAX_GRADE[a.kind])}return b.carried(a,n,e,p)})}static targets(t,n,e){return t.centre.map(s=>{const o=n(s.x,s.z);if(e===void 0||s.altitudeM===void 0)return o;const c=s.altitudeM+e;return c-o>b.HOLLOW_M||o-c>b.COVERED_M?c:o})}static samples(t,n){const e=[];let s=0;return t.centre.forEach((o,c)=>{t.along[c]+1e-6<s&&c<t.centre.length-1||(e.push({x:o.x,z:o.z,y:n[c]}),s=t.along[c]+b.SAMPLE_M)}),e}static median(t,n){const e=[];for(const o of t)Math.hypot(o.x-n.x,o.z-n.z)<=b.WINDOW_M&&e.push(o.y);if(e.length===0)return;e.sort((o,c)=>o-c);const s=e.length>>1;return e.length%2===1?e[s]:(e[s-1]+e[s])/2}static graded(t,n,e){if(!Number.isFinite(e)||t.length<3)return t;const s=[...t],o=s.length-1,c=n[o];if(Math.abs(s[o]-s[0])>e*c)return n.map(r=>s[0]+(s[o]-s[0])*r/c);for(let r=1;r<o;r++){const p=e*(n[r]-n[r-1]);s[r]=Math.min(s[r-1]+p,Math.max(s[r-1]-p,s[r]))}for(let r=o-1;r>0;r--){const p=e*(n[r+1]-n[r]);s[r]=Math.min(s[r+1]+p,Math.max(s[r+1]-p,s[r]))}return s}static carried(t,n,e,s){const[o,c]=b.ends(t),r=t.along[t.along.length-1],p=s(o),a=s(c);if(e!==void 0&&t.centre.every(h=>h.altitudeM!==void 0)){const h=t.centre.map(g=>g.altitudeM+e),d=p!==void 0?p-h[0]:0,L=a!==void 0?a-h[h.length-1]:0;return h.map((g,D)=>g+d+(L-d)*t.along[D]/r)}const l=p??n(o.x,o.z),M=a??n(c.x,c.z);return t.along.map(h=>l+(M-l)*h/r)}static ends(t){return[t.centre[0],t.centre[t.centre.length-1]]}static key(t){return`${Math.round(t.x*2)},${Math.round(t.z*2)}`}}class B{positions=[];indices=[];along=[];get vertexCount(){return this.positions.length/3}strip(t,n,e){const s=this.vertexCount;for(let o=0;o<t.length;o++)this.positions.push(t[o].x,t[o].y,t[o].z,n[o].x,n[o].y,n[o].z),e&&this.along.push(e[o],e[o]);for(let o=0;o<t.length-1;o++){const c=s+o*2;this.indices.push(c,c+2,c+1,c+1,c+2,c+3)}}beam(t,n,e,s=!0){const o=n.x-t.x,c=n.y-t.y,r=n.z-t.z,p=Math.hypot(o,c,r);if(p<1e-6)return;const a={x:o/p,y:c/p,z:r/p},l=Math.abs(a.y)>.9?{x:1,y:0,z:0}:{x:0,y:1,z:0},M=a.y*l.z-a.z*l.y,h=a.z*l.x-a.x*l.z,d=a.x*l.y-a.y*l.x,L=Math.hypot(M,h,d),g={x:M/L*e/2,y:h/L*e/2,z:d/L*e/2},D={x:a.y*g.z-a.z*g.y,y:a.z*g.x-a.x*g.z,z:a.x*g.y-a.y*g.x},E=(u,A,f)=>({x:u.x+g.x*A+D.x*f,y:u.y+g.y*A+D.y*f,z:u.z+g.z*A+D.z*f}),O=[[1,1],[-1,1],[-1,-1],[1,-1]];for(let u=0;u<4;u++){const[A,f]=O[u],[v,x]=O[(u+1)%4];this.quad(E(t,A,f),E(t,v,x),E(n,v,x),E(n,A,f))}s&&(this.quad(...[...O].reverse().map(([u,A])=>E(t,u,A))),this.quad(...O.map(([u,A])=>E(n,u,A))))}quad(t,n,e,s){const o=this.vertexCount;this.positions.push(t.x,t.y,t.z,n.x,n.y,n.z,e.x,e.y,e.z,s.x,s.y,s.z),this.indices.push(o,o+1,o+2,o,o+2,o+3)}}class i{static STEP_M=6;static BALLAST_HEIGHT_M=.5;static BALLAST_SLOPE=1.5;static BALLAST_SHOULDER_M=.45;static DECK_DEPTH_M=.8;static BANK_SLOPE=1.5;static SLEEPER_LENGTH_M=2.4;static SLEEPER_WIDTH_M=.29;static SLEEPER_SPACING_M=.6;static RAIL_HEAD_M=.072;static RAIL_HEIGHT_M=.18;static TRAM_RAIL_HEIGHT_M=.03;static LIFT_M=.06;static CATENARY={rail:{contactM:5.5,systemM:1.4,spanM:54,staggerM:.2},highSpeed:{contactM:5.08,systemM:1.4,spanM:63,staggerM:.2},service:{contactM:5.5,systemM:1.2,spanM:45,staggerM:.2},tram:{contactM:6,systemM:0,spanM:30,staggerM:.2}};static MESSENGER_SAG_M=.55;static MAST_SIDE_M=.26;static MAST_OFFSET_M=3.1;static MAST_ABOVE_M=.6;static CONTACT_DIAMETER_M=.012;static MESSENGER_DIAMETER_M=.011;static ARM_SIDE_M=.06;static TRACK_SPACING_M={rail:3.7,highSpeed:4.5,tram:3.1,subway:3.4,light_rail:3.4,funicular:3.2};static BALLAST_ALBEDO=[.17,.16,.15];static BANK_ALBEDO=[.085,.09,.05];static DECK_ALBEDO=[.26,.255,.24];static CONCRETE_ALBEDO=[.36,.35,.33];static WOOD_ALBEDO=[.07,.055,.045];static RUST_ALBEDO=[.085,.068,.058];static STEEL_ALBEDO=[.3,.31,.32];static COPPER_ALBEDO=[.09,.085,.07];static LINE_REACH_M=20;group=new F;stepM=i.STEP_M;drawn=0;laid=[];ballastMaterial=i.pebbled(i.lambert(i.BALLAST_ALBEDO,!0));earthMaterial=i.lambert(i.BANK_ALBEDO,!0);deckMaterial=i.lambert(i.DECK_ALBEDO,!1);concreteSleepers=i.sleeperMaterial(i.CONCRETE_ALBEDO);woodSleepers=i.sleeperMaterial(i.WOOD_ALBEDO);rustMaterial=i.lambert(i.RUST_ALBEDO,!0);headMaterial=new P({color:new H(.62,.62,.62),metalness:1,roughness:.28,polygonOffset:!0,polygonOffsetFactor:-2,polygonOffsetUnits:-2});steelMaterial=i.lambert(i.STEEL_ALBEDO,!1);wireMaterial=i.lambert(i.COPPER_ALBEDO,!1);constructor(){this.group.name="railways"}get count(){return this.drawn}setGroundSpacing(t){this.stepM=Number.isFinite(t)&&t>0?Math.min(i.STEP_M,Math.max(1.5,t/2)):i.STEP_M}set(t,n,e,s,o=1/0){this.clear();const r=t.map(d=>({line:d,path:d.points.map(L=>({...w(L.lat,L.lng,n,e),altitudeM:L.altitudeM}))})).filter(({line:d,path:L})=>d.level>=0&&i.within(L,o)),p=i.altitudeOffset(r,s),a=r.flatMap(({line:d,path:L})=>{const g=this.layoutOf(d,L);return g?[{line:d,layout:g}]:[]}),l=b.heights(a.map(({layout:d})=>d),s,p),M={ballast:new B,earth:new B,deck:new B,concrete:new B,wood:new B,rust:new B,head:new B,steel:new B,wire:new B};a.forEach(({line:d,layout:L},g)=>{this.lay(d,{...L,y:l[g]},s,M),this.laid.push({line:d,centre:L.centre}),this.drawn++});const h=[[M.ballast,this.ballastMaterial,"ballast",!1],[M.earth,this.earthMaterial,"embankments",!1],[M.deck,this.deckMaterial,"decks",!0],[M.concrete,this.concreteSleepers,"sleepers",!1],[M.wood,this.woodSleepers,"sleepers wood",!1],[M.rust,this.rustMaterial,"rails",!1],[M.head,this.headMaterial,"rail heads",!1],[M.steel,this.steelMaterial,"catenary masts",!0],[M.wire,this.wireMaterial,"catenary wires",!1]];for(const[d,L,g,D]of h){const E=i.meshOf(d,L);E&&(E.name=`railways ${g}`,E.castShadow=D,E.receiveShadow=!0,this.group.add(E))}}clear(){for(const t of[...this.group.children])this.group.remove(t),t.geometry?.dispose();this.drawn=0,this.laid=[]}lineAt(t,n){let e;for(const{line:s,centre:o}of this.laid)for(let c=0;c<o.length-1;c++){const r=o[c],p=o[c+1],a=p.x-r.x,l=p.z-r.z,M=a*a+l*l,h=M===0?0:Math.max(0,Math.min(1,((t-r.x)*a+(n-r.z)*l)/M)),d=Math.hypot(t-(r.x+a*h),n-(r.z+l*h));d<=i.LINE_REACH_M&&(!e||d<e.distance)&&(e={line:s,distance:d})}return e?.line}contactHeightM(t){if(!(t.electrification!=="overhead"||t.kind==="subway"||t.kind==="funicular"))return i.catenaryOf(t).contactM}static catenaryOf(t){return t.kind==="tram"?i.CATENARY.tram:t.highSpeed?i.CATENARY.highSpeed:t.service?i.CATENARY.service:i.CATENARY.rail}dispose(){this.clear();for(const t of[this.ballastMaterial,this.earthMaterial,this.deckMaterial,this.concreteSleepers,this.woodSleepers,this.rustMaterial,this.headMaterial,this.steelMaterial,this.wireMaterial])t.dispose()}static within(t,n){if(!Number.isFinite(n))return!0;const e=n*1.1+100;return t.some((s,o)=>Math.hypot(s.x,s.z)<=e||o>0&&Math.hypot((s.x+t[o-1].x)/2,(s.z+t[o-1].z)/2)<=e)}static altitudeOffset(t,n){const e=[];for(const{line:s,path:o}of t)if(s.level===0)for(const c of o)c.altitudeM!==void 0&&e.push(n(c.x,c.z)-c.altitudeM);if(!(e.length<5))return e.sort((s,o)=>s-o),e[Math.floor(e.length/2)]}layoutOf(t,n){const e=[];for(let c=0;c<n.length-1;c++){const r=n[c],p=n[c+1],a=Math.max(1,Math.ceil(Math.hypot(p.x-r.x,p.z-r.z)/this.stepM));for(let l=0;l<a;l++){const M=l/a,h=r.altitudeM!==void 0&&p.altitudeM!==void 0?r.altitudeM+(p.altitudeM-r.altitudeM)*M:void 0;e.push({x:r.x+(p.x-r.x)*M,z:r.z+(p.z-r.z)*M,altitudeM:h})}}if(e.push(n[n.length-1]),e.length<2)return;const s=[0];for(let c=1;c<e.length;c++)s.push(s[c-1]+Math.hypot(e[c].x-e[c-1].x,e[c].z-e[c-1].z));if(s[s.length-1]<.5)return;const o=e.map((c,r)=>{const p=e[Math.max(0,r-1)],a=e[Math.min(e.length-1,r+1)],l=a.x-p.x,M=a.z-p.z,h=Math.hypot(l,M);return h<1e-6?{x:1,z:0}:{x:l/h,z:M/h}});return{kind:t.kind,...t.highSpeed?{highSpeed:!0}:{},level:t.level,centre:e,along:s,dir:o}}lay(t,n,e,s){const o=t.highSpeed?i.TRACK_SPACING_M.highSpeed:i.TRACK_SPACING_M[t.kind],c=Math.min(8,Math.max(1,t.tracks)),r=Array.from({length:c},(E,O)=>(O-(c-1)/2)*o),p=t.kind==="tram",a=p?0:i.BALLAST_HEIGHT_M,l=i.LIFT_M,M=(E,O,u)=>({x:n.centre[E].x-n.dir[E].z*O,y:n.y[E]+u,z:n.centre[E].z+n.dir[E].x*O}),h=n.centre.map((E,O)=>O);if(!p){const E=i.SLEEPER_LENGTH_M/2+i.BALLAST_SHOULDER_M+(r[r.length-1]??0),O=h.map(A=>M(A,E,a+l)),u=h.map(A=>M(A,-E,a+l));if(s.ballast.strip(O,u),t.level===0){const A=E+a*i.BALLAST_SLOPE;for(const f of[1,-1]){const v=[],x=[];let m=!1;for(const z of h){const S=M(z,f*A,l),C=e(S.x,S.z)+l,T=S.y-C;T<0&&(S.y=Math.min(C,n.y[z]+a-.05+l)),v.push(S);const I=M(z,f*(A+Math.max(0,T)*i.BANK_SLOPE),l);I.y=Math.min(e(I.x,I.z)+l,S.y),S.y-I.y>.02&&(m=!0),x.push(I)}const _=f>0?O:u;f>0?s.ballast.strip(v,_):s.ballast.strip(_,v),m&&(f>0?s.earth.strip(x,v):s.earth.strip(v,x))}}else{const A=-i.DECK_DEPTH_M,f=E+.15,v=h.map(z=>M(z,f,a+l+.1)),x=h.map(z=>M(z,-f,a+l+.1)),m=h.map(z=>M(z,f,A)),_=h.map(z=>M(z,-f,A));s.deck.strip(m,v),s.deck.strip(x,_),s.deck.strip(_,m),s.deck.strip(v,h.map(z=>M(z,E,a+l+.1))),s.deck.strip(h.map(z=>M(z,-E,a+l+.1)),x)}}const d=t.service?s.wood:s.concrete,L=t.gaugeMm/2e3+i.RAIL_HEAD_M/2,g=p?i.TRAM_RAIL_HEIGHT_M:i.RAIL_HEIGHT_M,D=a+l;for(const E of r){if(!p){const O=i.SLEEPER_LENGTH_M/2;d.strip(h.map(u=>M(u,E+O,D+.004)),h.map(u=>M(u,E-O,D+.004)),n.along)}for(const O of[1,-1]){const u=E+O*L,A=i.RAIL_HEAD_M/2,f=h.map(x=>M(x,u+A,D+g)),v=h.map(x=>M(x,u-A,D+g));s.head.strip(f,v),s.rust.strip(h.map(x=>M(x,u+A,D)),f),s.rust.strip(v,h.map(x=>M(x,u-A,D)))}}t.electrification==="overhead"&&t.kind!=="subway"&&t.kind!=="funicular"&&this.catenary(t,n,r,D+g,M,e,s)}catenary(t,n,e,s,o,c,r){const p=i.catenaryOf(t),a=n.along[n.along.length-1],l=Math.max(1,Math.round(a/p.spanM)),M=a/l,h=Array.from({length:l},(f,v)=>(v+.5)*M),d=s+p.contactM,L=d+p.systemM,g=(p.systemM>0?L:d)+i.MAST_ABOVE_M,D=e[e.length-1],E=e.length>2,O=e.length===1?[1]:[1,-1],u=(f,v,x)=>{let m=0,_=n.along.length-2;for(;m<_;){const T=m+_+1>>1;n.along[T]<=f?m=T:_=T-1}const z=Math.min(1,Math.max(0,(f-n.along[m])/Math.max(1e-6,n.along[m+1]-n.along[m]))),S=o(m,v,x),C=o(m+1,v,x);return{x:S.x+(C.x-S.x)*z,y:S.y+(C.y-S.y)*z,z:S.z+(C.z-S.z)*z}};for(const f of h){const v=u(f,0,d);if(!(t.level===0&&c(v.x,v.z)>v.y)){for(const x of O){const m=x*(D+i.MAST_OFFSET_M),_=u(f,m,0);t.level===0&&(_.y=Math.min(_.y,c(_.x,_.z)));const z=u(f,m,g);if(r.steel.beam(_,z,i.MAST_SIDE_M),E)continue;const C=(O.length===1?e[0]:x*D)-x*.6,T=p.systemM>0?L:d+.3;r.steel.beam(u(f,m,T),u(f,C,T),i.ARM_SIDE_M),r.steel.beam(u(f,m,d-.4),u(f,C,T),i.ARM_SIDE_M)}if(E){const x=D+i.MAST_OFFSET_M;r.steel.beam(u(f,x,g-.2),u(f,-x,g-.2),i.MAST_SIDE_M*.8)}}}const A=[0,...h,a];for(const[f,v]of e.entries()){const x=m=>m===0||m===A.length-1?0:((m+f)%2===0?1:-1)*p.staggerM;for(let m=0;m<A.length-1;m++){const _=A[m],z=A[m+1];if(z-_<.1||(r.wire.beam(u(_,v+x(m),d),u(z,v+x(m+1),d),i.CONTACT_DIAMETER_M,!1),p.systemM<=0))continue;const S=4,C=T=>{const I=m===0?.5+T/2:m===A.length-2?T/2:T;return L-i.MESSENGER_SAG_M*4*I*(1-I)};for(let T=0;T<S;T++){const I=T/S,G=(T+1)/S;r.wire.beam(u(_+(z-_)*I,v,C(I)),u(_+(z-_)*G,v,C(G)),i.MESSENGER_DIAMETER_M,!1)}}}}static meshOf(t,n){if(t.indices.length===0)return;const e=new K;return e.setAttribute("position",new N(new Float32Array(t.positions),3)),t.along.length>0&&e.setAttribute("aAlong",new N(new Float32Array(t.along),1)),e.setIndex(new N(new Uint32Array(t.indices),1)),e.computeVertexNormals(),new U(e,n)}static lambert(t,n){return new k({color:new H(...t),...n?{polygonOffset:!0,polygonOffsetFactor:-2,polygonOffsetUnits:-2}:{}})}static pebbled(t){return t.onBeforeCompile=n=>{n.vertexShader=n.vertexShader.replace("#include <common>",`#include <common>
|
|
2
|
+
varying vec3 vBallast;`).replace("#include <begin_vertex>",`#include <begin_vertex>
|
|
3
|
+
vBallast = position;`),n.fragmentShader=n.fragmentShader.replace("#include <common>",`#include <common>
|
|
4
|
+
varying vec3 vBallast;
|
|
5
|
+
float ballastHash(vec2 p) {
|
|
6
|
+
p = fract(p * vec2(127.1, 311.7));
|
|
7
|
+
p += dot(p, p + 34.5);
|
|
8
|
+
return fract(p.x * p.y);
|
|
9
|
+
}
|
|
10
|
+
float ballastNoise(vec2 p) {
|
|
11
|
+
vec2 i = floor(p);
|
|
12
|
+
vec2 f = fract(p);
|
|
13
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
14
|
+
return mix(mix(ballastHash(i), ballastHash(i + vec2(1.0, 0.0)), f.x), mix(ballastHash(i + vec2(0.0, 1.0)), ballastHash(i + vec2(1.0, 1.0)), f.x), f.y);
|
|
15
|
+
}`).replace("#include <map_fragment>",`#include <map_fragment>
|
|
16
|
+
{
|
|
17
|
+
float eye = length(vViewPosition);
|
|
18
|
+
vec2 at = vBallast.xz + vec2(0.0, vBallast.y);
|
|
19
|
+
float stones = (ballastHash(floor(at * 22.0)) - 0.5) * 0.9 * (1.0 - smoothstep(4.0, 18.0, eye))
|
|
20
|
+
+ (ballastNoise(at * 6.0) - 0.5) * 0.5 * (1.0 - smoothstep(15.0, 60.0, eye))
|
|
21
|
+
+ (ballastNoise(at * 0.7) - 0.5) * 0.35 * (1.0 - smoothstep(80.0, 300.0, eye));
|
|
22
|
+
diffuseColor.rgb *= 1.0 + stones;
|
|
23
|
+
}`)},t.customProgramCacheKey=()=>"rr0-railway-ballast",t}static sleeperMaterial(t){const n=new k({color:new H(1,1,1),polygonOffset:!0,polygonOffsetFactor:-3,polygonOffsetUnits:-3}),e=new H(...t),s=new H(...i.BALLAST_ALBEDO);return n.onBeforeCompile=o=>{o.uniforms.uSleeper={value:e},o.uniforms.uCrib={value:s},o.uniforms.uSpacing={value:i.SLEEPER_SPACING_M},o.uniforms.uDuty={value:i.SLEEPER_WIDTH_M/i.SLEEPER_SPACING_M},o.vertexShader=o.vertexShader.replace("#include <common>",`#include <common>
|
|
24
|
+
attribute float aAlong;
|
|
25
|
+
varying float vAlong;`).replace("#include <begin_vertex>",`#include <begin_vertex>
|
|
26
|
+
vAlong = aAlong;`),o.fragmentShader=o.fragmentShader.replace("#include <common>",`#include <common>
|
|
27
|
+
varying float vAlong;
|
|
28
|
+
uniform vec3 uSleeper;
|
|
29
|
+
uniform vec3 uCrib;
|
|
30
|
+
uniform float uSpacing;
|
|
31
|
+
uniform float uDuty;
|
|
32
|
+
// How much of [0, x] periods is sleeper: the integral of a pulse of width uDuty at the start of each period.
|
|
33
|
+
float sleeperIntegral(float x) {
|
|
34
|
+
return floor(x) * uDuty + min(fract(x), uDuty);
|
|
35
|
+
}`).replace("#include <map_fragment>",`#include <map_fragment>
|
|
36
|
+
{
|
|
37
|
+
float u = vAlong / uSpacing;
|
|
38
|
+
float w = max(fwidth(u), 1e-4);
|
|
39
|
+
float cover = (sleeperIntegral(u + 0.5 * w) - sleeperIntegral(u - 0.5 * w)) / w;
|
|
40
|
+
diffuseColor.rgb *= mix(uCrib, uSleeper, clamp(cover, 0.0, 1.0));
|
|
41
|
+
}`)},n.customProgramCacheKey=()=>"rr0-railway-sleepers",n}}export{i as RailwaySystem};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{af as D}from"./rr0-sighting-editor.mjs";class M{static MIN_ROAD_M=5.5;static WIDE_ROAD_M=9;static LINE_WIDTH_M=.12;static DASH_M=3;static GAP_M=10;static RIVE_DASH_M=2.5;static RIVE_GAP_M=3.5;static MIN_DASH_M=.5;static LANE_M=3.5;static SHOULDER_MIN_M=1.5;static SOLID_EDGE_FROM_M=7;static SOLID_EDGE_FROM_KMH=80;static BEND_RADIUS_M=300;static EDGE_SETBACK_M=.4;static PAINT_RADIUS_M=450;static LIFT_M=.015;static BARRIER_MAX_AXES_M=40;static BARRIER_MIN_AXES_M=5;static BARRIER_HEIGHT_M=.8;static BARRIER_HALF_WIDTH_M=.2;static BARRIER_STEP_M=4;static painted(t){return t.surface==="paved"&&t.widthM>=M.MIN_ROAD_M&&t.kind!=="roundabout"}static plan(t){if(!M.painted(t))return[];const u=t.widthM,l=u/2,i=M.EDGE_SETBACK_M;if(!(t.direction!==void 0&&t.lanes!==void 0)){const I=[{offsetM:l-i,pattern:"solid"},{offsetM:-(l-i),pattern:"solid"}],A=u>=M.WIDE_ROAD_M?[-u/4,u/4]:[0];for(const x of A)I.push({offsetM:x,pattern:"dashed"});return I}const s=t.lanes,n=u>=M.SOLID_EDGE_FROM_M||(t.speedKmh??0)>=M.SOLID_EDGE_FROM_KMH?"solid":"rive";if(t.direction==="both"){if(s<2)return[];const I=[{offsetM:l-i,pattern:n},{offsetM:-(l-i),pattern:n}];if(s>=4){I.push({offsetM:.1,pattern:"solid"},{offsetM:-.1,pattern:"solid"});const A=Math.floor(s/2),x=u/s;for(let z=1;z<A;z++)I.push({offsetM:z*x,pattern:"dashed"},{offsetM:-z*x,pattern:"dashed"})}else I.push({offsetM:0,pattern:"dashed",solidInBends:!0});return I}const r=t.direction==="backward"?-1:1,o=I=>r*(l-I),c=Math.min(M.LANE_M,u/Math.max(s,1)),h=s*c,d=u-h,_=(t.kind==="motorway"||t.kind==="dual")&&d>=M.SHOULDER_MIN_M,E=[{offsetM:o(i),pattern:t.kind==="motorway"||t.kind==="dual"?"solid":n}];E.push({offsetM:o(_?h:u-i),pattern:t.kind==="motorway"||t.kind==="dual"?"solid":n});for(let I=1;I<s;I++)E.push({offsetM:o(I*c),pattern:"dashed"});return E}static lay(t,u,l,i){let e=0;const s=(f,n)=>{i(f,M.LINE_WIDTH_M,{offsetM:n,liftM:M.LIFT_M,minHalfM:M.LINE_WIDTH_M/2}),e++};for(const f of t){const n=M.plan(f);if(n.length===0)continue;const r=f.points.map(o=>D(o.lat,o.lng,u,l));for(const o of M.near(r,M.PAINT_RADIUS_M))for(const c of n){if(c.pattern==="solid"){s(o,c.offsetM);continue}const[h,d]=c.pattern==="dashed"?[M.DASH_M,M.GAP_M]:[M.RIVE_DASH_M,M.RIVE_GAP_M];for(const _ of c.solidInBends?M.byBends(o):[{path:o,bend:!1}])if(_.bend)s(_.path,c.offsetM);else for(const E of M.dashes(_.path,h,d))s(E,c.offsetM)}}return e}static byBends(t){if(t.length<3)return[{path:t,bend:!1}];const u=(e,s)=>Math.atan2(s.x-e.x,-(s.z-e.z)),l=new Array(t.length-1).fill(!1);for(let e=1;e<t.length-1;e++){const s=Math.hypot(t[e].x-t[e-1].x,t[e].z-t[e-1].z),f=Math.hypot(t[e+1].x-t[e].x,t[e+1].z-t[e].z);if(s<1e-6||f<1e-6)continue;let n=Math.abs(u(t[e],t[e+1])-u(t[e-1],t[e]));n>Math.PI&&(n=2*Math.PI-n),(s+f)/2/Math.max(n,1e-6)<M.BEND_RADIUS_M&&(l[e-1]=!0,l[e]=!0)}const i=[];for(let e=0;e<l.length;e++){const s=i.at(-1);s&&s.bend===l[e]?s.path.push(t[e+1]):i.push({path:[t[e],t[e+1]],bend:l[e]})}return i}static barriers(t,u,l){const i=t.filter(n=>(n.kind==="motorway"||n.kind==="dual")&&(n.direction==="forward"||n.direction==="backward")),e=i.map(n=>{const r=n.points.map(o=>D(o.lat,o.lng,u,l));return n.direction==="backward"?[...r].reverse():r}),s=[],f=M.BARRIER_STEP_M;return i.forEach((n,r)=>{for(const o of M.near(e[r],M.PAINT_RADIUS_M)){let c=[];for(const h of M.resample(o,f)){const d=M.midwayToOpposite(h,r,i,e);d?c.push(d):c.length>0&&(c.length>=2&&s.push(c),c=[])}c.length>=2&&s.push(c)}}),s}static midwayToOpposite(t,u,l,i){let e;for(let s=0;s<i.length;s++){if(s===u||l[s].id<l[u].id)continue;const f=i[s];for(let n=0;n<f.length-1;n++){const r=f[n+1].x-f[n].x,o=f[n+1].z-f[n].z,c=r*r+o*o;if(c<1e-9||(r*t.dx+o*t.dz)/Math.sqrt(c)>-.9)continue;const h=Math.max(0,Math.min(1,((t.x-f[n].x)*r+(t.z-f[n].z)*o)/c)),d={x:f[n].x+r*h,z:f[n].z+o*h},_=Math.hypot(t.x-d.x,t.z-d.z);_<M.BARRIER_MIN_AXES_M||_>M.BARRIER_MAX_AXES_M||(!e||_<e.distance)&&(e={distance:_,point:d})}}return e?{x:(t.x+e.point.x)/2,z:(t.z+e.point.z)/2}:void 0}static resample(t,u){const l=[];for(let e=0;e<t.length-1;e++){const s=Math.hypot(t[e+1].x-t[e].x,t[e+1].z-t[e].z);if(s<1e-6)continue;const f=(t[e+1].x-t[e].x)/s,n=(t[e+1].z-t[e].z)/s;for(let r=0;r<s;r+=u)l.push({x:t[e].x+f*r,z:t[e].z+n*r,dx:f,dz:n})}const i=l.at(-1);return i&&l.push({...t[t.length-1],dx:i.dx,dz:i.dz}),l}static barrierGeometry(t,u){const l=[],i=[],e=M.BARRIER_HALF_WIDTH_M;for(const s of t){if(s.length<2)continue;const f=l.length/3;for(let n=0;n<s.length;n++){const r=s[Math.max(0,n-1)],o=s[Math.min(s.length-1,n+1)],c=Math.hypot(o.x-r.x,o.z-r.z)||1,h=-(o.z-r.z)/c*e,d=(o.x-r.x)/c*e,_=u(s[n].x,s[n].z);l.push(s[n].x+h,_,s[n].z+d,s[n].x+h,_+M.BARRIER_HEIGHT_M,s[n].z+d,s[n].x-h,_+M.BARRIER_HEIGHT_M,s[n].z-d,s[n].x-h,_,s[n].z-d)}for(let n=0;n<s.length-1;n++){const r=f+n*4,o=r+4;for(let c=0;c<3;c++)i.push(r+c,o+c,r+c+1,r+c+1,o+c,o+c+1)}}return{positions:l,indices:i}}static near(t,u){const l=[];let i;for(let e=0;e<t.length-1;e++)Math.min(Math.hypot(t[e].x,t[e].z),Math.hypot(t[e+1].x,t[e+1].z))<=u||Math.hypot((t[e].x+t[e+1].x)/2,(t[e].z+t[e+1].z)/2)<=u?(i||(i=[t[e]]),i.push(t[e+1])):i&&(l.push(i),i=void 0);return i&&l.push(i),l}static dashes(t,u,l){const i=[],e=u+l;let s=0,f;const n=(o,c)=>({x:t[o].x+(t[o+1].x-t[o].x)*c,z:t[o].z+(t[o+1].z-t[o].z)*c});for(let o=0;o<t.length-1;o++){const c=Math.hypot(t[o+1].x-t[o].x,t[o+1].z-t[o].z);if(c<1e-6)continue;let h=0;for(;h<c;){const d=(s+h)%e,_=d<u,E=_?u-d:e-d,I=Math.min(c,h+E);_&&(f||(f=[n(o,h/c)]),f.push(n(o,I/c)),I-h>=E-1e-9&&(i.push(f),f=void 0)),h=I}s+=c}f&&f.length>=2&&i.push(f);const r=o=>o.slice(1).reduce((c,h,d)=>c+Math.hypot(h.x-o[d].x,h.z-o[d].z),0);return i.filter(o=>o.length>=2&&r(o)>=M.MIN_DASH_M)}}export{M as RoadMarkings};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{x as a,D as o}from"./rr0-sighting-editor.mjs";const l={bodies:{sun:"Sol",moon:"Luna",Venus:"Venus",Mars:"Marte",Jupiter:"Júpiter",Saturn:"Saturno"},stars:{Sirius:"Sirio",Canopus:"Canopo",Arcturus:"Arturo",Capella:"Capela",Procyon:"Proción",Aldebaran:"Aldebarán",Spica:"Espiga",Pollux:"Pólux",Castor:"Cástor",Regulus:"Régulo"},comets:{"halley-1910":"cometa Halley","brooks-1911":"cometa Brooks","skjellerup-maristany-1927":"cometa Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"cometa de Kock-Paraskevopoulos","southern-1947":"cometa austral","eclipse-1948":"cometa del eclipse","arend-roland-1957":"cometa Arend-Roland","mrkos-1957":"cometa Mrkos","seki-lines-1962":"cometa Seki-Lines","ikeya-seki-1965":"cometa Ikeya-Seki","bennett-1970":"cometa Bennett","white-ortiz-bolelli-1970":"cometa White-Ortiz-Bolelli","kohoutek-1973":"cometa Kohoutek","west-1976":"cometa West","iras-araki-alcock-1983":"cometa IRAS-Araki-Alcock","halley-1986":"cometa Halley","hyakutake-1996":"cometa Hyakutake","hale-bopp-1997":"cometa Hale-Bopp","mcnaught-2007":"cometa McNaught","lovejoy-2011":"cometa Lovejoy","panstarrs-2013":"cometa PANSTARRS","neowise-2020":"cometa NEOWISE","tsuchinshan-atlas-2024":"cometa Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova de 1006","sn-1054":"supernova de 1054","sn-1181":"supernova de 1181","sn-1572":"supernova de Tycho","sn-1604":"supernova de Kepler","t-crb-1866":"nova de la Corona Boreal 1866","t-aur-1891":"nova de Auriga 1891","gk-per-1901":"nova de Perseo 1901","dn-gem-1912":"nova de Géminis 1912","v603-aql-1918":"nova del Águila 1918","v476-cyg-1920":"nova del Cisne 1920","rr-pic-1925":"nova del Pintor 1925","dq-her-1934":"nova de Hércules 1934","cp-lac-1936":"nova del Lagarto 1936","cp-pup-1942":"nova de la Popa 1942","t-crb-1946":"nova de la Corona Boreal 1946","v446-her-1960":"nova de Hércules 1960","v533-her-1963":"nova de Hércules 1963","hr-del-1967":"nova del Delfín 1967","lv-vul-1968":"nova de la Zorra 1968","fh-ser-1970":"nova de la Serpiente 1970","v1500-cyg-1975":"nova del Cisne 1975","v842-cen-1986":"nova del Centauro 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova del Cisne 1992","v382-vel-1999":"nova de las Velas 1999","v1494-aql-1999":"nova del Águila 1999","v4743-sgr-2002":"nova de Sagitario 2002","rs-oph-2006":"nova de Ofiuco 2006","v1280-sco-2007":"nova de Escorpio 2007","v339-del-2013":"nova del Delfín 2013","v1369-cen-2013":"nova del Centauro 2013","rs-oph-2021":"nova de Ofiuco 2021"},satelliteClasses:{echo:"los globos Echo","iridium-flares":"los destellos de los Iridium",iss:"la Estación Espacial Internacional","starlink-trains":"los trenes de Starlink"},showers:{quadrantids:"Cuadrántidas",lyrids:"Líridas de abril","eta-aquariids":"Eta Acuáridas","alpha-capricornids":"Alfa Capricórnidas","southern-delta-aquariids":"Delta Acuáridas del Sur",perseids:"Perseidas","southern-taurids":"Táuridas del Sur",draconids:"Dracónidas de octubre",orionids:"Oriónidas","northern-taurids":"Táuridas del Norte",leonids:"Leónidas",geminids:"Gemínidas",ursids:"Úrsidas"},lightRigs:{airliner:"Avión de pasajeros",helicopter:"Helicóptero","car-headlights":"Coche, faros encendidos","car-hazards":"Coche, luces de emergencia","emergency-beacons":"Rotativos de vehículo de emergencia","traffic-signal":"Semáforo","pedestrian-signal":"Semáforo peatonal",streetlamp:"Farola"},instruments:{eye:"A simple vista","rectilinear-lens":"Cámara, modelo desconocido","roamer-1-120":"Roamer 1, película 120","instamatic-126":"Instamatic, película 126","slr-35mm-50":"Réflex 35 mm, objetivo 50 mm","slr-35mm-zoom":"Réflex 35 mm, zoom 70-210 mm","phone-landscape":"Teléfono, en horizontal","phone-portrait":"Teléfono, en vertical",...o.names(),...a.names()},decorKinds:{building:"Edificio",tree:"Árbol",shrub:"Arbusto",bridge:"Puente",wire:"Línea aérea",crop:"Hilera de cultivo",terrace:"Bancal (terraza)",mound:"Montón de piedras",wall:"Muro de piedra seca",streetlight:"Farola",trafficlight:"Semáforo",crossing:"Paso de peatones",roadsign:"Señal de tráfico",vehicle:"Vehículo",observer:"Observador",aircraft:"Aeronave",entity:"Ser"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:e=>`al ${e}`,starTooltip:"{name} — mag {mag}, {alt}° sobre el horizonte",starTooltipBelow:"{name} — mag {mag}, {alt}° bajo la horizontal",decorTooltip:"{name} — {size}, a {distance}",satelliteTooltip:"{name} — satélite, mag {mag}, a {height} km de altitud",opticsTooltips:{halo22:"Halo de 22° — un anillo alrededor del Sol, por luz desviada en cristales de hielo hexagonales de los cirros; su borde interior es rojo, a 21,7°",halo46:"Halo de 46° — un anillo más raro y débil: la luz entra por una cara lateral del cristal y sale por una cara del extremo",oddRadius:"Halo de {angle}° — un anillo de radio impar, raro y débil, hecho por cristales de hielo con extremos piramidales",parhelion:"Parhelio — una mancha brillante de colores junto al Sol, a su altura, por placas de hielo que caen planas; rojo hacia el Sol",parhelion120:"Parhelio de 120° — una mancha blanca débil a 120° del Sol, por luz reflejada dentro de placas planas",upperTangentArc:"Arco tangente superior — un arco brillante apoyado sobre el halo de 22°, por columnas tumbadas en horizontal",lowerTangentArc:"Arco tangente inferior — un arco que toca la base del halo de 22°, por columnas tumbadas en horizontal",circumzenithal:"Arco circuncenital — una banda de colores vivos cerca del cenit, por luz que entra por la cara superior de placas planas (solo con el Sol bajo 32°)",circumhorizontal:"Arco circunhorizontal — una banda de colores baja en el cielo, por luz que entra por la cara lateral de placas planas (solo con el Sol sobre 58°)",parhelicCircle:"Círculo parhélico — un círculo blanco alrededor de todo el cielo a la altura del Sol, por reflejos en las caras verticales de placas planas",pillar:"Pilar de luz — una columna de luz sobre el Sol, por reflejos en placas planas ligeramente inclinadas",subsun:"Subsol — una imagen del Sol bajo el horizonte, por reflejos en las caras planas de las placas"},trafficTooltip:{unnamed:"Aeronave {hex}",altitude:"{value} ft",speed:"{value} kt",heading:"rumbo {value}°",position:"a {distance} km, {elevation}° sobre el horizonte, {bearing}",heard:"Se oye a {level} dB(A), salió del avión hace {delay} s, {lag}° detrás de él: {character}{pitch}",rumble:"un rumor grave, nada por encima de {cutoff} Hz",muffled:"un ruido sordo, nada por encima de {cutoff} Hz",broad:"un rugido ancho",pitchHigher:", sonido {percent} % más agudo",pitchLower:", sonido {percent} % más grave",inaudible:"Inaudible aquí: {level} dB(A) frente a {ambient} dB(A) de ruido ambiente",soundUnknown:"Sonido no calculable: el avión aún no estaba registrado cuando salió",contrailPersistent:"Deja una estela que dura: el aire está sobresaturado respecto al hielo ({rhi} % respecto al hielo)",contrailShort:"Deja una estela breve: el aire está seco respecto al hielo ({rhi} % respecto al hielo)",military:"militar",restricted:"identidad oculta por su propietario",candidate:"Un candidato compatible, no una identificación"},railwayTooltip:{kinds:{rail:"Vía férrea",light_rail:"Metro ligero",tram:"Tranvía",subway:"Metro",funicular:"Funicular"},highSpeed:"Línea de alta velocidad",service:"Vía de servicio",singleTrack:"vía única",tracks:"{count} vías",overhead:"catenaria, hilo de contacto a {height} m sobre el carril",overheadVoltage:"catenaria a {voltage}, hilo de contacto a {height} m sobre el carril",thirdRail:"tercer carril",thirdRailVoltage:"tercer carril a {voltage}",notElectrified:"sin electrificar",gauge:"ancho de {mm} mm",metreGauge:"vía métrica",distance:"a {distance}"},credits:"Créditos",notAVideo:"Esto no es un vídeo",isASimulation:"Es una simulación en tiempo real."};export{l as sceneNames_es};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{x as a,D as r}from"./rr0-sighting-editor.mjs";const l={bodies:{sun:"Soleil",moon:"Lune",Venus:"Vénus",Saturn:"Saturne"},stars:{Betelgeuse:"Bételgeuse",Vega:"Véga",Altair:"Altaïr",Aldebaran:"Aldébaran",Regulus:"Régulus",Antares:"Antarès"},comets:{"halley-1910":"comète de Halley","brooks-1911":"comète Brooks","skjellerup-maristany-1927":"comète Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"comète de Kock-Paraskevopoulos","southern-1947":"comète australe","eclipse-1948":"comète de l'éclipse","arend-roland-1957":"comète Arend-Roland","mrkos-1957":"comète Mrkos","seki-lines-1962":"comète Seki-Lines","ikeya-seki-1965":"comète Ikeya-Seki","bennett-1970":"comète Bennett","white-ortiz-bolelli-1970":"comète White-Ortiz-Bolelli","kohoutek-1973":"comète Kohoutek","west-1976":"comète West","iras-araki-alcock-1983":"comète IRAS-Araki-Alcock","halley-1986":"comète de Halley","hyakutake-1996":"comète Hyakutake","hale-bopp-1997":"comète Hale-Bopp","mcnaught-2007":"comète McNaught","lovejoy-2011":"comète Lovejoy","panstarrs-2013":"comète PANSTARRS","neowise-2020":"comète NEOWISE","tsuchinshan-atlas-2024":"comète Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova de 1006","sn-1054":"supernova de 1054","sn-1181":"supernova de 1181","sn-1572":"supernova de Tycho","sn-1604":"supernova de Kepler","t-crb-1866":"nova de la Couronne boréale 1866","t-aur-1891":"nova du Cocher 1891","gk-per-1901":"nova de Persée 1901","dn-gem-1912":"nova des Gémeaux 1912","v603-aql-1918":"nova de l'Aigle 1918","v476-cyg-1920":"nova du Cygne 1920","rr-pic-1925":"nova du Peintre 1925","dq-her-1934":"nova d'Hercule 1934","cp-lac-1936":"nova du Lézard 1936","cp-pup-1942":"nova de la Poupe 1942","t-crb-1946":"nova de la Couronne boréale 1946","v446-her-1960":"nova d'Hercule 1960","v533-her-1963":"nova d'Hercule 1963","hr-del-1967":"nova du Dauphin 1967","lv-vul-1968":"nova du Petit Renard 1968","fh-ser-1970":"nova du Serpent 1970","v1500-cyg-1975":"nova du Cygne 1975","v842-cen-1986":"nova du Centaure 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova du Cygne 1992","v382-vel-1999":"nova des Voiles 1999","v1494-aql-1999":"nova de l'Aigle 1999","v4743-sgr-2002":"nova du Sagittaire 2002","rs-oph-2006":"nova d'Ophiuchus 2006","v1280-sco-2007":"nova du Scorpion 2007","v339-del-2013":"nova du Dauphin 2013","v1369-cen-2013":"nova du Centaure 2013","rs-oph-2021":"nova d'Ophiuchus 2021"},satelliteClasses:{echo:"les ballons Echo","iridium-flares":"les flashes d'Iridium",iss:"la Station spatiale internationale","starlink-trains":"les trains de Starlink"},showers:{quadrantids:"Quadrantides",lyrids:"Lyrides d'avril","eta-aquariids":"Êta Aquarides","alpha-capricornids":"Alpha Capricornides","southern-delta-aquariids":"Delta Aquarides du Sud",perseids:"Perséides","southern-taurids":"Taurides du Sud",draconids:"Draconides d'octobre",orionids:"Orionides","northern-taurids":"Taurides du Nord",leonids:"Léonides",geminids:"Géminides",ursids:"Ursides"},lightRigs:{airliner:"Avion de ligne",helicopter:"Hélicoptère","car-headlights":"Voiture, phares allumés","car-hazards":"Voiture, feux de détresse","emergency-beacons":"Gyrophares de véhicule d'urgence","traffic-signal":"Feu de circulation","pedestrian-signal":"Feu piéton",streetlamp:"Lampadaire"},instruments:{eye:"Œil nu","rectilinear-lens":"Appareil, modèle inconnu","roamer-1-120":"Roamer 1, film 120","instamatic-126":"Instamatic, film 126","slr-35mm-50":"Reflex 35 mm, objectif 50 mm","slr-35mm-zoom":"Reflex 35 mm, zoom 70-210 mm","phone-landscape":"Téléphone, tenu couché","phone-portrait":"Téléphone, tenu debout",...r.names(),...a.names()},decorKinds:{building:"Bâtiment",tree:"Arbre",shrub:"Buisson",bridge:"Pont",wire:"Ligne aérienne",crop:"Rang de culture",terrace:"Restanque (terrasse)",mound:"Tas de pierres",wall:"Muret de pierres sèches",streetlight:"Lampadaire",trafficlight:"Feu de circulation",crossing:"Passage piéton",roadsign:"Panneau de signalisation",vehicle:"Véhicule",observer:"Observateur",aircraft:"Aéronef",entity:"Être"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:e=>/^[EO]/.test(e)?`à l'${e}`:`au ${e}`,starTooltip:"{name} — mag {mag}, {alt}° au-dessus de l'horizon",starTooltipBelow:"{name} — mag {mag}, {alt}° sous l'horizontale",decorTooltip:"{name} — {size}, à {distance}",satelliteTooltip:"{name} — satellite, mag {mag}, à {height} km d'altitude",opticsTooltips:{halo22:"Halo de 22° — un anneau autour du Soleil, dû à la lumière déviée par des cristaux de glace hexagonaux dans les cirrus ; son bord interne est rouge, à 21,7°",halo46:"Halo de 46° — un anneau plus rare et plus faible : la lumière entre par une face latérale d'un cristal et sort par une face de bout",oddRadius:"Halo de {angle}° — un anneau à rayon impair, rare et faible, dû à des cristaux de glace à bouts pyramidaux",parhelion:"Parhélie — une tache brillante colorée à côté du Soleil, à sa hauteur, due à des plaquettes de glace tombant à plat ; rouge côté Soleil",parhelion120:"Parhélie à 120° — une faible tache blanche à 120° du Soleil, due à la lumière réfléchie à l'intérieur de plaquettes à plat",upperTangentArc:"Arc tangent supérieur — un arc brillant posé sur le haut du halo de 22°, dû à des colonnes couchées à l'horizontale",lowerTangentArc:"Arc tangent inférieur — un arc touchant le bas du halo de 22°, dû à des colonnes couchées à l'horizontale",circumzenithal:"Arc circumzénithal — une bande vivement colorée près du zénith, due à la lumière entrant par la face du dessus de plaquettes à plat (seulement Soleil sous 32°)",circumhorizontal:"Arc circumhorizontal — une bande colorée basse dans le ciel, due à la lumière entrant par la face latérale de plaquettes à plat (seulement Soleil au-dessus de 58°)",parhelicCircle:"Cercle parhélique — un cercle blanc faisant tout le tour du ciel à la hauteur du Soleil, dû aux reflets sur les faces verticales de plaquettes à plat",pillar:"Pilier de lumière — une colonne de lumière dressée au-dessus du Soleil, due aux reflets sur des plaquettes à plat légèrement inclinées",subsun:"Sous-soleil — une image du Soleil sous l'horizon, due aux reflets sur les faces plates de plaquettes"},trafficTooltip:{unnamed:"Aéronef {hex}",altitude:"{value} ft",speed:"{value} kt",heading:"cap {value}°",position:"à {distance} km, {elevation}° au-dessus de l'horizon, {bearing}",heard:"Entendu à {level} dB(A), parti de l'avion il y a {delay} s, {lag}° derrière lui : {character}{pitch}",rumble:"un grondement grave, rien au-delà de {cutoff} Hz",muffled:"un bruit sourd, rien au-delà de {cutoff} Hz",broad:"un souffle large",pitchHigher:", son plus aigu de {percent} %",pitchLower:", son plus grave de {percent} %",inaudible:"Inaudible ici : {level} dB(A) contre {ambient} dB(A) de bruit ambiant",soundUnknown:"Son non calculable : l'avion n'était pas encore enregistré quand il est parti",contrailPersistent:"Laisse une traînée qui dure : l'air est sursaturé en glace ({rhi} % par rapport à la glace)",contrailShort:"Laisse une traînée brève : l'air est sec par rapport à la glace ({rhi} % par rapport à la glace)",military:"militaire",restricted:"identité masquée par son propriétaire",candidate:"Un candidat compatible, pas une identification"},railwayTooltip:{kinds:{rail:"Voie ferrée",light_rail:"Métro léger",tram:"Tramway",subway:"Métro",funicular:"Funiculaire"},highSpeed:"Ligne à grande vitesse",service:"Voie de service",singleTrack:"voie unique",tracks:"{count} voies",overhead:"caténaire, fil de contact à {height} m au-dessus du rail",overheadVoltage:"caténaire en {voltage}, fil de contact à {height} m au-dessus du rail",thirdRail:"troisième rail",thirdRailVoltage:"troisième rail en {voltage}",notElectrified:"non électrifiée",gauge:"écartement de {mm} mm",metreGauge:"voie métrique",distance:"à {distance}"},credits:"Crédits",notAVideo:"Ceci n'est pas une vidéo",isASimulation:"C'est une simulation en temps réel."};export{l as sceneNames_fr};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{x as e,D as o}from"./rr0-sighting-editor.mjs";const l={bodies:{sun:"Sole",moon:"Luna",Venus:"Venere",Mars:"Marte",Jupiter:"Giove",Saturn:"Saturno"},stars:{Sirius:"Sirio",Canopus:"Canopo",Arcturus:"Arturo",Procyon:"Procione",Pollux:"Polluce",Castor:"Castore",Regulus:"Regolo"},comets:{"halley-1910":"cometa di Halley","brooks-1911":"cometa Brooks","skjellerup-maristany-1927":"cometa Skjellerup-Maristany","de-kock-paraskevopoulos-1941":"cometa de Kock-Paraskevopoulos","southern-1947":"cometa australe","eclipse-1948":"cometa dell'eclisse","arend-roland-1957":"cometa Arend-Roland","mrkos-1957":"cometa Mrkos","seki-lines-1962":"cometa Seki-Lines","ikeya-seki-1965":"cometa Ikeya-Seki","bennett-1970":"cometa Bennett","white-ortiz-bolelli-1970":"cometa White-Ortiz-Bolelli","kohoutek-1973":"cometa Kohoutek","west-1976":"cometa West","iras-araki-alcock-1983":"cometa IRAS-Araki-Alcock","halley-1986":"cometa di Halley","hyakutake-1996":"cometa Hyakutake","hale-bopp-1997":"cometa Hale-Bopp","mcnaught-2007":"cometa McNaught","lovejoy-2011":"cometa Lovejoy","panstarrs-2013":"cometa PANSTARRS","neowise-2020":"cometa NEOWISE","tsuchinshan-atlas-2024":"cometa Tsuchinshan-ATLAS"},novae:{"sn-1006":"supernova del 1006","sn-1054":"supernova del 1054","sn-1181":"supernova del 1181","sn-1572":"supernova di Tycho","sn-1604":"supernova di Keplero","t-crb-1866":"nova della Corona Boreale 1866","t-aur-1891":"nova dell'Auriga 1891","gk-per-1901":"nova di Perseo 1901","dn-gem-1912":"nova dei Gemelli 1912","v603-aql-1918":"nova dell'Aquila 1918","v476-cyg-1920":"nova del Cigno 1920","rr-pic-1925":"nova del Pittore 1925","dq-her-1934":"nova di Ercole 1934","cp-lac-1936":"nova della Lucertola 1936","cp-pup-1942":"nova della Poppa 1942","t-crb-1946":"nova della Corona Boreale 1946","v446-her-1960":"nova di Ercole 1960","v533-her-1963":"nova di Ercole 1963","hr-del-1967":"nova del Delfino 1967","lv-vul-1968":"nova della Volpetta 1968","fh-ser-1970":"nova del Serpente 1970","v1500-cyg-1975":"nova del Cigno 1975","v842-cen-1986":"nova del Centauro 1986","sn-1987a":"supernova 1987A","v1974-cyg-1992":"nova del Cigno 1992","v382-vel-1999":"nova delle Vele 1999","v1494-aql-1999":"nova dell'Aquila 1999","v4743-sgr-2002":"nova del Sagittario 2002","rs-oph-2006":"nova di Ofiuco 2006","v1280-sco-2007":"nova dello Scorpione 2007","v339-del-2013":"nova del Delfino 2013","v1369-cen-2013":"nova del Centauro 2013","rs-oph-2021":"nova di Ofiuco 2021"},satelliteClasses:{echo:"i palloni Echo","iridium-flares":"i lampi degli Iridium",iss:"la Stazione Spaziale Internazionale","starlink-trains":"i treni di Starlink"},showers:{quadrantids:"Quadrantidi",lyrids:"Liridi di aprile","eta-aquariids":"Eta Aquaridi","alpha-capricornids":"Alfa Capricornidi","southern-delta-aquariids":"Delta Aquaridi australi",perseids:"Perseidi","southern-taurids":"Tauridi australi",draconids:"Draconidi di ottobre",orionids:"Orionidi","northern-taurids":"Tauridi boreali",leonids:"Leonidi",geminids:"Geminidi",ursids:"Ursidi"},lightRigs:{airliner:"Aereo di linea",helicopter:"Elicottero","car-headlights":"Auto, fari accesi","car-hazards":"Auto, luci di emergenza","emergency-beacons":"Lampeggianti di veicolo di soccorso","traffic-signal":"Semaforo","pedestrian-signal":"Semaforo pedonale",streetlamp:"Lampione"},instruments:{eye:"Occhio nudo","rectilinear-lens":"Fotocamera, modello sconosciuto","roamer-1-120":"Roamer 1, pellicola 120","instamatic-126":"Instamatic, pellicola 126","slr-35mm-50":"Reflex 35 mm, obiettivo 50 mm","slr-35mm-zoom":"Reflex 35 mm, zoom 70-210 mm","phone-landscape":"Telefono, in orizzontale","phone-portrait":"Telefono, in verticale",...o.names(),...e.names()},decorKinds:{building:"Edificio",tree:"Albero",shrub:"Arbusto",bridge:"Ponte",wire:"Linea aerea",crop:"Filare di coltura",terrace:"Terrazzamento",mound:"Mucchio di pietre",wall:"Muretto a secco",streetlight:"Lampione",trafficlight:"Semaforo",crossing:"Attraversamento pedonale",roadsign:"Segnale stradale",vehicle:"Veicolo",observer:"Osservatore",aircraft:"Aeromobile",entity:"Essere"},compassPoints:["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSO","SO","OSO","O","ONO","NO","NNO"],towards:a=>`verso ${a}`,starTooltip:"{name} — mag {mag}, {alt}° sopra l'orizzonte",starTooltipBelow:"{name} — mag {mag}, {alt}° sotto l'orizzontale",decorTooltip:"{name} — {size}, a {distance}",satelliteTooltip:"{name} — satellite, mag {mag}, a {height} km di quota",opticsTooltips:{halo22:"Alone di 22° — un anello attorno al Sole, dovuto alla luce deviata da cristalli di ghiaccio esagonali nei cirri; il bordo interno è rosso, a 21,7°",halo46:"Alone di 46° — un anello più raro e debole: la luce entra da una faccia laterale del cristallo ed esce da una faccia di estremità",oddRadius:"Alone di {angle}° — un anello a raggio dispari, raro e debole, prodotto da cristalli di ghiaccio con estremità piramidali",parhelion:"Parelio — una macchia luminosa colorata accanto al Sole, alla sua altezza, da lastrine di ghiaccio che cadono piatte; rosso verso il Sole",parhelion120:"Parelio di 120° — una debole macchia bianca a 120° dal Sole, da luce riflessa dentro lastrine piatte",upperTangentArc:"Arco tangente superiore — un arco luminoso appoggiato sull'alone di 22°, da colonne coricate in orizzontale",lowerTangentArc:"Arco tangente inferiore — un arco che tocca la base dell'alone di 22°, da colonne coricate in orizzontale",circumzenithal:"Arco circumzenitale — una banda di colori vivi vicino allo zenit, da luce che entra dalla faccia superiore di lastrine piatte (solo con il Sole sotto i 32°)",circumhorizontal:"Arco circumorizzontale — una banda colorata bassa nel cielo, da luce che entra dalla faccia laterale di lastrine piatte (solo con il Sole sopra i 58°)",parhelicCircle:"Cerchio parelico — un cerchio bianco attorno a tutto il cielo all'altezza del Sole, da riflessi sulle facce verticali di lastrine piatte",pillar:"Colonna di luce — un fascio di luce sopra il Sole, da riflessi su lastrine piatte leggermente inclinate",subsun:"Sotto-sole — un'immagine del Sole sotto l'orizzonte, da riflessi sulle facce piatte delle lastrine"},trafficTooltip:{unnamed:"Aeromobile {hex}",altitude:"{value} ft",speed:"{value} kt",heading:"prua {value}°",position:"a {distance} km, {elevation}° sopra l'orizzonte, {bearing}",heard:"Si sente a {level} dB(A), partito dall'aereo {delay} s fa, {lag}° dietro di esso: {character}{pitch}",rumble:"un rombo grave, nulla oltre {cutoff} Hz",muffled:"un rumore sordo, nulla oltre {cutoff} Hz",broad:"un fragore ampio",pitchHigher:", suono più acuto del {percent} %",pitchLower:", suono più grave del {percent} %",inaudible:"Non si sente qui: {level} dB(A) contro {ambient} dB(A) di rumore ambientale",soundUnknown:"Suono non calcolabile: l'aereo non era ancora registrato quando è partito",contrailPersistent:"Lascia una scia che dura: l'aria è sovrasatura rispetto al ghiaccio ({rhi} % rispetto al ghiaccio)",contrailShort:"Lascia una scia breve: l'aria è secca rispetto al ghiaccio ({rhi} % rispetto al ghiaccio)",military:"militare",restricted:"identità nascosta dal proprietario",candidate:"Un candidato compatibile, non un'identificazione"},railwayTooltip:{kinds:{rail:"Ferrovia",light_rail:"Metropolitana leggera",tram:"Tranvia",subway:"Metropolitana",funicular:"Funicolare"},highSpeed:"Linea ad alta velocità",service:"Binario di servizio",singleTrack:"binario unico",tracks:"{count} binari",overhead:"linea aerea, filo di contatto a {height} m sopra la rotaia",overheadVoltage:"linea aerea a {voltage}, filo di contatto a {height} m sopra la rotaia",thirdRail:"terza rotaia",thirdRailVoltage:"terza rotaia a {voltage}",notElectrified:"non elettrificata",gauge:"scartamento di {mm} mm",metreGauge:"scartamento metrico",distance:"a {distance}"},credits:"Crediti",notAVideo:"Questo non è un video",isASimulation:"È una simulazione in tempo reale."};export{l as sceneNames_it};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const e={basisTitle:"Cómo se obtuvo este valor",basisField:"Base",howField:"Cómo",rationaleField:"Justificación",basisReset:"Base devuelta a «declarada»: el valor se volvió a escribir (era: {basis}).",lawSources:"Fuentes: {sources}",extrapolation:"Estas leyes se midieron en observaciones nocturnas: aplicarlas a una observación diurna es una extrapolación.",sectionAccountConditions:"Condiciones del testimonio",sectionViewing:"Condiciones de visión",sectionMoon:"Calibre Luna",sectionErrorParameters:"Parámetros de error de este testigo",errorModelField:"Modelo de error",delayField:"Plazo antes de este relato",delayUnit:"días",versionField:"Versión",wordField:"Palabra empleada",exposureField:"Exposición",independenceField:"Independencia",independentYes:"sin haber hablado con los otros testigos",independentNo:"tras hablar con los otros testigos",unknownChoice:"no se sabe",darkAdapted:"Adaptado a la oscuridad",correctedVision:"Vista corregida (gafas, lentillas)",glare:"Luz intensa justo antes",viewingNote:"El cristal o el parabrisas y los prismáticos se ajustan en «Visión» más arriba.",moonIntro:"El testigo muestra la Luna llena como mostró el objeto. La razón da su propio factor de tamaño angular: la única medida que hace individual la ley general. A tomar una vez por testigo.",moonField:"Luna tal como se muestra",moonHint:"Con el brazo extendido, 1 cm ≈ 1°",moonNone:"Aún no medida: se aplica la ley general ({law}).",moonFactor:"Factor ×{k}: sustituye a la ley general en todos los tamaños angulares de este testigo.",moonReal:"Luna real · 0,52°",parametersIntro:"Los errores de un mismo testigo están ligados: el mismo factor en todos sus tamaños, el mismo desfase en todas sus horas. Calculados, nunca escritos: ningún margen «±» se introduce a mano.",showMore:"Mostrar",basis:{measured:"◆ medida",stated:"declarada",derived:"deducida",assumed:"supuesta"},how:{clock:"leída en un reloj",anchored:"anclada a un evento fechado",estimated:"estimada","shown-on-the-spot":"mostrada en el lugar","arm-length-gauge":"calibre con el brazo extendido","recalled-object":"referida a un objeto conocido",instrument:"instrumento",landmark:"referencia del paisaje",occlusion:"ocultación","known-size":"tamaño conocido",triangulation:"triangulación"},status:{consolidated:"consolidada",individual:"individual",single:"estudio único",argued:"argumentada",contested:"discutida"},laws:{timeClock:"± {minutes} min (leída en un reloj)",timeAnchored:"± {minutes} min (anclada a un evento fechado)",timeEstimated:"± {minutes} min para 9 testigos de 10 (estimada)",duration:"{low} a {high}: ×/÷{factor} (log-normal)",elevationOver:"{low} a {high}: altura sobreestimada",measuredInstrument:"± {degrees}° (medida)",measuredLandmark:"± {degrees}° (según una referencia)",headingCross:"{low} a {high}: ± {degrees}°, sentido a veces invertido",sizeMoon:"{low} a {high}: factor ×{factor} del calibre Luna",sizeShown:"{low} a {high}: mostrada en el lugar, +2 a +17 %",sizeRecalled:"{low} a {high}: referida a un objeto conocido, ~30 % demasiado grande",sizeArm:"{low} a {high}: sobreestimada ×{from} a ×{to} con el brazo extendido",sizeGauge:"{low} a {high}: calibre, ± {percent} %",distanceAnchored:"Anclada: su error sigue al de aquello de lo que se deduce",distanceNotData:"No es un dato: errónea en un factor {factor} o más sin anclaje"},parameterNames:{clock:"Desfase del reloj",date:"Desfase de fecha",heading:"Rotación del rumbo",elevation:"Compresión de alturas",size:"Factor de tamaño angular",duration:"Factor de duración"},parameterScopes:{clock:"todas las horas",date:"la fecha",heading:"todos los rumbos",elevation:"todas las alturas",size:"todos los tamaños angulares",duration:"la duración y la escala de la línea de tiempo"},parameters:{clockClock:"± {minutes} min (reloj)",clockAnchored:"± {minutes} min (anclada)",clockEstimated:"± {minutes} min (estimada)",dateShift:"±1 día, mes o año; horario de verano ({percent} % de las fechas)",headingRotation:"± {degrees}°, espejo posible",elevationCompression:"sobreestimadas, nunca subestimadas",sizeMoon:"×{factor} (calibre Luna)",sizeArm:"×{from} a ×{to} con el brazo extendido",sizeShown:"+2 a +17 % mostrada en el lugar",durationFactor:"×/÷{factor} (log-normal)"},words:{light:"luz",object:"objeto",craft:"aparato",ufo:"ovni",other:"otra"},exposures:{none:"ninguna",press:"prensa",broadcast:"radio, televisión","other-witnesses":"otros testigos",investigators:"investigadores"},models:{consolidated:"Lecturas consolidadas (UFO@home)",keul:"Keul (tamaños mostrados en el lugar)"},candidates:{title:"Explicaciones candidatas",verdicts:{consolidated:"Compatible con sesgos consolidados",contested:"Solo invocando sesgos discutidos",incompatible:"Incompatible incluso en los límites"},cost:"coste {x} σ",seeVariant:"Ver esta variante",variantLabel:"Variante: {name}",backToAccount:"Volver al relato",costNote:"Un coste no es una probabilidad: dice qué sesgos hay que invocar, y cuánto.",scopeNote:"Matriz de Poher (1977) para la lista de partida; la Luna, los planetas, los pasos de satélites, las reentradas, los bólidos registrados y los aviones del registro se calculan y se confrontan con el relato.",fields:{time:"Hora",heading:"Acimut",elevation:"Altura sobre el horizonte",size:"Anchura aparente",duration:"Duración",sweep:"Recorrido en el cielo"},biases:{clock:"desfase del reloj {x} min",heading:"rotación del rumbo {x}°",elevation:"altura sobreestimada ×{x}",size:"tamaño sobreestimado ×{x}",duration:"duración mal estimada ×{x}",sweep:"recorrido mal estimado {x}°"},reasons:{"never-seen":"Nunca visible desde este lugar en el margen de la hora dada.",direction:"Demasiado lejos de la dirección dada, incluso en los límites de las leyes.",size:"Tamaño demasiado distinto, incluso en los límites de las leyes.",motion:"No se mueve como dice el relato, y nada hace leer uno por otro.",growth:"No crece como dice el relato, ni se vuelve más brillante."},readingTitle:"Lectura",readings:{grouped:"luces leídas como un solo cuerpo","still-seen-moving":"una luz fija vista en movimiento (efecto autocinético, nubes que pasan)","moving-seen-still":"una luz en movimiento vista inmóvil (llegando de frente)","brightening-as-approach":"un brillo creciente leído como un acercamiento"},notAgainst:"No es un argumento contra el relato.",noDirection:"El relato no sitúa el fenómeno en el cielo: no hay nada que confrontar.",noSky:"Sin fecha, hora y lugar, ningún astro puede situarse.",bodies:{Moon:"Luna",Venus:"Venus",Mars:"Marte",Jupiter:"Júpiter",Saturn:"Saturno"},aircraft:"Aeronave {name}",interpretation:"Interpretación: {name}",keepVariant:"Guardar esta variante",keptTitle:"Variantes guardadas ({n})",seeKept:"Ver",removeVariant:"Quitar",keptRecomputed:"calculada de nuevo: {verdict}, coste {x} σ",keptModel:"modelo: {model}",reentry:"Reentrada {name}",star:"Estrella {name}",fireball:"Bólido {name}",poherLoading:"Cargando la matriz de Poher…",poherFailed:"No se pudo leer la matriz de Poher: solo se proponen los astros.",poherTitle:"Según la matriz de Poher (1977)",poherIntro:"Los demás fenómenos conocidos de la matriz, sin trayectoria calculada aquí: su nota es el juicio de Poher, a confrontar a mano.",poherPossible:"Posibles",poherExcluded:"Excluidos ({n})",poherExcludedBy:"excluido por: {list}",poherDoubted:"dudoso según estimaciones: {list}",poherScore:"nota {x}",poherTag:"Poher: {state}",poherStatePossible:"posible, nota {x}",poherStateExcluded:"excluido",answersTitle:"Respuestas deducidas de la grabación ({n})",firm:"firme",soft:"estimación, no excluye nada por sí sola"}},a={color:"Color",transparency:"Transparencia",halo:"Halo",blur:"Desenfoque",brightness:"Brillo",shapeTitle:"Nombre",utcOffset:"Zona horaria",cloudBase:"Base de las nubes",elevation:"Altitud",heightAboveGround:"Altura sobre el suelo",duration:"Duración",placeName:"Lugar",latitude:"Latitud",longitude:"Longitud",heading:"Orientación",pitch:"Inclinación",roll:"Alabeo",sway:"Vaivén en reposo",swayTitle:"Cuánto mueve la vista el cuerpo que sostiene el instrumento cuando no camina: 1 para una persona de pie, 0 para un trípode. Vacío: 1 (0 si el relato dice que el observador estaba paralizado)",lightPollution:"Cielo nocturno",lightPollutionTitle:"El cenit de una noche sin Luna en este lugar, en magnitudes por segundo de arco cuadrado, tal como lo lee un Sky Quality Meter o lo da el atlas mundial del brillo artificial del cielo (Falchi et al. 2016, lightpollutionmap.info, «SQM»). 22 es un cielo natural; un suburbio ronda 19, el centro de una ciudad 17. Vacío: un cielo natural",observationTime:"Inicio de la observación",observationEndTime:"Fin de la observación",assessmentGroup:"Evaluación",assessmentNames:{coverage:"Datos del observador"},assessmentVerdicts:{"hynek.nl":"NL — luz nocturna","hynek.dd":"DD — disco diurno","hynek.rv":"RV — radar-visual","hynek.ce1":"EC1 — encuentro cercano","hynek.ce2":"EC2 — con huella física","hynek.ce3":"EC3 — con entidades"},timeQualifierApproximate:"Aproximada",timeQualifierUncertain:"Incierta",timeQualifierBoth:"Incierta y aproximada",timeSeasonSpring:"Primavera",timeSeasonSummer:"Verano",timeSeasonAutumn:"Otoño",timeSeasonWinter:"Invierno",summaryGroups:{observation:"Observación",location:"Posición",temporal:"Tiempo",weather:"Clima",sound:"Sonido"},summaryGroup:"Resumen",summaryDescription:"Descripción",closeDescription:"Cerrar la descripción",observerGroup:"Observador",observerId:"ID",observerTitle:"Tratamiento",observerLastName:"Apellidos",observerFirstNames:"Nombres",sightingId:"ID",tags:"Etiquetas",cloudCover:"Nubosidad",highCloudCover:"Nubes de hielo (cirros)",focalLength:"Distancia focal",fieldOfView:"Campo de visión",aperture:"Apertura",exposure:"Exposición",focusDistance:"Enfocado a",iceCrystalAlignment:"Alineación de los cristales",rareIceCrystals:"Cristales raros",cloudDarkness:"Oscuridad de las nubes",precipitationType:"Precipitación",precipitationNone:"Ninguna",precipitationRain:"Lluvia",precipitationSnow:"Nieve",precipitationHail:"Granizo",precipitationIntensity:"Intensidad",windDirection:"Dirección del viento",windSpeed:"Velocidad del viento",storm:"Tormenta",cloudsGroup:"Nubes",precipitationGroup:"Precipitación",windGroup:"Viento",soundKind:"Sonido",soundNone:"Ninguno (silencioso)",soundHum:"Zumbido",soundWhistle:"Silbido",soundRumble:"Retumbo",soundCrackle:"Crepitación",soundVolume:"Volumen",soundPitch:"Tono",soundSrc:"Grabación",instrument:"Observado con",filter:"Delante",filterNone:"nada",filterSolarVisual:"un filtro solar para el ojo (gafas de eclipse, densidad 5)",filterSolarPhoto:"una película solar para cámara (densidad 3,8)",decorAircraft:"Aeronave",decorEntity:"Ser",decorAltitude:"Altitud",decorLights:"Luces",decorLightsNone:"ninguna",decor:"Entorno",decorBuilding:"Edificio",decorTree:"Árbol",decorShrub:"Arbusto",decorBridge:"Puente",decorWire:"Línea aérea",decorCrop:"Hilera de cultivo",decorTerrace:"Bancal (terraza)",decorMound:"Montón de piedras",decorWall:"Muro de piedra seca",decorStreetlight:"Farola",decorTrafficLight:"Semáforo",decorCrossing:"Paso de peatones",decorRoadSign:"Señal de tráfico",decorVehicle:"Vehículo",decorObserver:"Otro observador",decorEast:"Distancia al este",decorNorth:"Distancia al norte",decorHeading:"Orientación",decorColor:"Color",decorLit:"Encendido",decorTitle:"Nombre",milestones:"Momentos",milestoneLabel:"Etiqueta",milestoneNote:"Qué ocurre",addMilestone:"Nombrar este momento",deleteMilestone:"Eliminar momento",goToMilestone:"Ir a este momento",decorWidth:"Anchura",decorLength:"Longitud",decorHeight:"Altura",decorModel:"Modelo 3D",decorModelAdvanced:"Modelo desde una dirección",decorModelUrl:"Dirección glTF/GLB",decorModelTitle:"Nombre del modelo",decorModelAuthor:"Autor",decorModelLicense:"Licencia",decorModelSource:"Procedencia",decorObserverSide:"Ubicación del observador",decorObserverSideNone:"No presente",decorSideFront:"Delante",decorSideBehind:"Detrás",decorSideLeft:"Izquierda",decorSideRight:"Derecha",decorSideFrontLeft:"Delante a la izquierda",decorSideFrontRight:"Delante a la derecha",decorSideBehindLeft:"Detrás a la izquierda",decorSideBehindRight:"Detrás a la derecha"},o={...a,oval:"Óvalo",polygon:"Polígono",modelTriangle:"Triángulo",modelSaucer:"Platillo",modelCigar:"Cigarro",modelChevron:"Chevrón",modelLight:"Luz",modelPartDisc:"disco",modelPartDome:"cúpula",addVertex:"Añadir vértice",deleteVertex:"Eliminar vértice",notAPolygon:"Selecciona una sola forma poligonal",tooFewVertices:"Una forma necesita al menos 3 puntos",shape:"Forma",apparentWidth:"Anchura aparente",realWidth:"Anchura real",distance:"Distancia",shapeRotation:"Rotación",shapeRotationTitle:"Cuánto está girada la forma en el dibujo, en sentido horario, en grados: lo que ajusta su asa de rotación",sizeLock:"Mantener",lockNone:"nada",lockApparent:"la anchura aparente",lockReal:"la anchura real",lockDistance:"la distancia",apparentSize:"{moons}× la Luna",utcOffsetPlaceholder:"según la longitud",realSizeBetween:"La escena acota esa anchura: entre {min} y {max} m, según lo que cruza",realSizeAtLeast:"La escena acota esa anchura: al menos {min} m, según lo que pasa por detrás",realSizeAtMost:"La escena acota esa anchura: como mucho {max} m, según lo que pasa por delante",realSizeUnknown:"Nada en la escena acota esa anchura: solo es lo que implica la distancia",realSizeOutside:" — la anchura de arriba queda fuera",blurBound:"Desenfocado a través de este objetivo: más cerca de {max} m",blurBoundNoInstrument:"El desenfoque a simple vista no acota ninguna distancia — un ojo no tiene diafragma con el que desenfocar",blurBoundNotAtInfinity:"El desenfoque solo acota una distancia con un objetivo enfocado al infinito: este está enfocado a {focus} m, lo que desenfoca a ambos lados",realSizeContradiction:"Contradicción: los cruces declarados no pueden ser todos ciertos",realDistanceHere:" — es decir, aquí entre {min} y {max} m",clearDistanceHypothesis:"Retirar la hipótesis de distancia",clearDistanceHypothesisTitle:"Volver a lo que establece la grabación",depthStated:"Dibujado a {m} m, como indica la grabación",depthHypothesis:"Dibujado a {m} m: tu hipótesis — lo que el decorado oculta de él es lo que perdería algo tan lejano",depthDerived:"Dibujado a {m} m, según la propia marcha del observador",depthBounded:"Dibujado a {m} m, según lo que pasa por detrás y por delante",depthConventional:"Dibujado a {m} m por convención: nada en la grabación establece una distancia",addShape:"Añadir forma",deleteShape:"Eliminar forma",play:"Reproducir",pause:"Pausa",noDuration:"Sin duración de observación",previousKeyframe:"Fotograma clave anterior",nextKeyframe:"Fotograma clave siguiente",keyframeMark:"Fotograma clave",shapesTrack:"formas",observerTrack:"observador",weatherTrack:"meteorología",soundTrack:"sonido",group:"Agrupar",ungroup:"Desagrupar",duplicate:"Duplicar",bringToFront:"Traer al frente",sendToBack:"Enviar al fondo",contextMenuDelete:"Eliminar",onlyOneShape:"Solo hay una forma",alreadyAtFront:"Esta forma ya está al frente",alreadyAtBack:"Esta forma ya está al fondo",needTwoShapesToGroup:"Selecciona al menos dos formas para agruparlas",notGrouped:"Esta forma no forma parte de un grupo",multipleShapesSelected:"Varias formas seleccionadas — selecciona solo una para editar esto",samplingRate:"Frecuencia de muestreo",currentPosition:"Posición actual",switchToElapsed:"haz clic para mostrar el tiempo transcurrido",switchToClockTime:"haz clic para mostrar la hora del día",durationPlaceholder:"duración de la observación",durationImprecise:"Estas fechas no determinan con suficiente precisión una duración — introdúcela manualmente.",export:"Guardar",frozenTitle:"Datos congelados",frozenHint:"Lo que la escena pediría si no a terceros en cada reproducción (relieve, foto del suelo, carreteras, agua, vías férreas, atmósfera alta), tomado al guardar y conservado en archivos junto a la grabación, para que se reproduzca igual sin pedir nada a nadie.",frozenLive:"Consultar las fuentes en cada reproducción (no congelar nada)",frozenRelief:"Relieve",frozenImagery:"Foto del suelo",frozenRoads:"Carreteras",frozenWater:"Agua",frozenRailways:"Vías férreas",frozenUpperAir:"Atmósfera alta",frozenMap:"Foto del mapa",fileItemRecording:"Registro",fileItemWeather:"Tiempo",fileItemPlace:"Lugar",fileItemLightPollution:"Contaminación lumínica",fileItemDecor:"Decorado",weatherStatedByObserver:"tal como la dio el observador",annexSource:"Archivo",annexStorageInline:"dentro del propio registro",annexEditorLabel:"El anexo como texto JSON",annexUnreadable:"Este archivo no es un anexo de este tipo: no se ha cambiado nada.",frozenTakenOn:"tomado el {date}",frozenPending:"se toma al guardar",frozenLiveState:"consultado en directo",frozenRefresh:"Actualizar",frozenTaking:"Tomando: {group}… {done}/{of}",frozenFailed:"{group}: la fuente no respondió, no se tomó nada.",frozenMissing:"{file} no se pudo leer: queda fuera del archivo.",frozenExported:"Guardado con {count} anexos ({size}), en un archivo que descomprimir donde se publica la grabación.",identityHint:"Nombra a alguien solo si lo consintió o publicó él mismo su testimonio; si no, bastan unas iniciales.",identityAsk:"Esta grabación nombra o sitúa a una persona. Respondes de lo que publicas: nombra a alguien solo si lo consintió, o si publicó él mismo su testimonio. Si no, bastan unas iniciales.",identityLastName:"Apellidos: {value}",identityFirstNames:"Nombre: {value}",identityNameInId:"Nombre en un identificador: {value}",identityNameInText:"Nombre en el texto: {value}",identityAddress:"Dirección: {value}",identityEmail:"Correo electrónico: {value}",identityPhone:"Número de teléfono: {value}",identityInitials:"Sustituir por iniciales",identityKeep:"Guardar de todos modos",identityBack:"Volver",importFile:"Cargar un archivo de observación",paramSummaryTitle:"Lo que indica la grabación ({n})",wholeKeyframes:"Cada fotograma clave entero",wholeKeyframesHint:"Si no, un fotograma clave solo dice lo que cambió desde el anterior, como se escribe una grabación a mano. Cambiar esto vacía el historial de deshacer.",importUrlPlaceholder:"https://…/sighting.json",inputFileFromFile:"desde su disco",inputFileFromUrl:"desde una dirección",inputFileModeHint:"Pulsar para darlo de la otra forma: un archivo suyo o una dirección",inputFileLoad:"Cargar",importError:"No se pudo cargar esa grabación — revisa el archivo o la URL e inténtalo de nuevo.",importErrorCors:'Esa dirección responde, pero el navegador no tiene permiso para leerla desde esta página. El archivo en sí está bien: su servidor debe enviarlo con la cabecera "Access-Control-Allow-Origin: *". Si no es tu servidor, eso es lo que debes pedir a su administrador.',importErrorMixedContent:"Una página segura no puede cargar una dirección que empiece por http://. Usa https:// si ese servidor lo ofrece.",importErrorUnreachable:"Nada respondió en esa dirección. Revisa cómo está escrita y que tengas conexión.",importErrorStatus:"Ese servidor respondió con un error ({status}). Probablemente la dirección es incorrecta o el archivo se ha movido.",importErrorMalformed:"Esa dirección respondió, pero lo que devolvió no es una grabación.",record:"Grabar",stop:"Detener",according:"según",sourceElevation:"Relieve",sourceImagery:"Imágenes",sourceAircraft:"Tráfico aéreo",sourceFile:"Archivo",sourceKind:"Datos",placeNamePlaceholder:"Valensole, Francia",searchPlace:"Localizar",placeMatch:"Coincidencias",placeSearching:"Buscando el lugar…",placeMatchFound:"lugar encontrado",placeMatchesFound:"lugares encontrados",placeNotFound:"Ningún lugar con ese nombre",placeSearchFailed:"Búsqueda de lugares no disponible por el momento",utcOffsetNoZone:"Ninguna zona horaria marca este desfase ese día",utcOffsetImplausible:"Esta zona horaria no corresponde a la longitud introducida, cuya hora solar es UTC{solar} — aun así, la escena y el registro meteorológico obedecen a lo que se declara aquí. Vacía el campo para deducirla de la longitud.",timeZoneManual:"desconocido",altitudeAboveSeaLevel:"Altitud del observador sobre el nivel del mar — el suelo del lugar introducido fija su mínimo: un observador en los Alpes no está a 0 m.",groundAt:"suelo a {m} m",headingPlaceholder:"desconocido",edtfInvalid:"Fecha/hora EDTF no válida (p. ej. 1965-07-01T05:00, 2025-06?, 2025~).",edtfPlaceholder:"AAAA-MM-DDThh:mm[?~%] o hh:mm",observationTimeHint:"EDTF — p. ej. 1965-07-01T05:00, 2025-06? (incierto), 2025~ (aproximado), o solo 05:00 si no se conoce la fecha",observationEndTimeHint:"EDTF — p. ej. 1965-07-01T05:10, 2025-06? (incierto), 2025~ (aproximado), o solo 05:10 si no se conoce la fecha",presetsGroupLabel:"Forma del ovni",description:"Descripción",tagsPlaceholder:"separadas por comas",weather:"Meteorología",shapeGroup:"Fenómeno",shapesSubgroup:"Formas",bodiesSubgroup:"Cuerpos",launchesSubgroup:"Lanzamientos",sky:"Cielo",dataSources:"Fuentes de datos",beamsSubgroup:"Haces",soundGroup:"Sonido",close:"Cerrar",editorKicker:"Editor de avistamiento",witnessError:e,expandTracks:"Desplegar las pistas",collapseTracks:"Plegar las pistas",addKeyframeHere:"Añadir un fotograma clave aquí",keyframeHere:"Aquí hay un fotograma clave: editarlo lo modifica",overlayHorizon:"Horizonte · inclinación {deg}°",overlayFov:"Campo de visión {v}° × {h}°",overlayWind:"Sopla hacia {point} · {speed} m/s",sectionIdentity:"Identidad",sectionProfile:"Perfil",sectionTestimony:"Testimonio",sectionVision:"Visión",sectionPerception:"Percepción",sectionCoordinates:"Coordenadas",sectionGaze:"Mirada",sectionNightSky:"Cielo nocturno",sectionPeriod:"Periodo",sectionSurvey:"Decorado tomado de un levantamiento",sectionHeard:"Lo que se oyó",sectionSoundRecording:"Grabación",sectionPicture:"Foto",sectionPose:"Pose",sectionAppearance:"Apariencia",sectionSize:"Tamaño y distancia",sectionPath:"Trayectoria",moreSettings:"Más ajustes ({n})",lessSettings:"Menos ajustes",showSettings:"Mostrar ({n} ajustes)",showSettingsOne:"Mostrar (1 ajuste)",showSettingsAny:"Mostrar",hideSettings:"Ocultar",save:"Guardar",stateNew:"Nueva grabación",panelIntroObservation:"Lo que pasó, en pocas líneas, y lo que queda por completar.",panelIntroObserver:"Quién lo vio, y con qué. Cada observador tiene su propio punto de vista en la escena.",panelIntroLocation:"Desde dónde miraba el observador, y en qué dirección.",panelIntroTemporal:"Cuándo empezó, cuánto duró, y los momentos del relato.",panelIntroDecor:"Lo que rodeaba al observador: vehículos, edificios, vegetación.",panelIntroWeather:"El tiempo que hacía, y lo que cruzaba el cielo sin ser el fenómeno: lanzamientos, haces.",panelIntroShape:"Lo que se vio, dibujado en la escena desde el punto de vista del observador.",panelIntroSound:"Lo que se oyó.",panelIntroReference:"Fotos y croquis, ajustados a la escena para compararla.",panelIntroFile:"La grabación completa, para guardar o volver a cargar.",temporalGroup:"Fecha",fileGroup:"Archivos",fileLoading:"Cargando el editor…",weatherEditedAsk:"Esta edición toca el tiempo, un dato leído dinámicamente desde {source}. ¿Quieres dejar de leerlo desde {source}?",weatherEditedStop:"Dejar de leerlo",weatherEditedKeep:"Seguir leyéndolo (deshacer mi edición)",fileEditorLabel:"El registro como texto JSON",fileSearchPhrases:{Find:"Buscar",Replace:"Reemplazar",next:"siguiente",previous:"anterior",all:"todo","match case":"mayúsculas","by word":"palabra completa",regexp:"regexp",replace:"reemplazar","replace all":"reemplazar todo",close:"cerrar","current match":"coincidencia actual","on line":"en la línea","replaced $ matches":"$ coincidencias reemplazadas","replaced match on line $":"coincidencia reemplazada en la línea $","Go to line":"Ir a la línea",go:"ir"},timeQualifierExact:"Exacta",durationPrecise:"precisa",durationIso:"imprecisa",durationModeTitle:"Decir la duración exactamente, o como se enunció: aproximadamente, entre dos duraciones",durationInvalid:"No es una duración: PT10M, PT1H30M, PT5M/PT10M…",durationHelpTitle:"Lo que acepta el texto (EDTF)",durationHelpLines:`PT45S — 45 segundos
|
|
2
|
+
PT10M — 10 minutos
|
|
3
|
+
PT1H30M — 1 hora 30 minutos
|
|
4
|
+
PT5M/PT10M — entre 5 y 10 minutos
|
|
5
|
+
Terminar con ? si es incierto, ~ si es aproximado, % para ambos
|
|
6
|
+
1965-?07 — la duda también puede afectar a una parte`,durationChosen:"(simulada: {value})",accountView:"Relato",accountView2d:"2D · formas",accountView3d:"3D · cuerpos",accountViewHint:"Lo que muestra el render y lo que se edita: las formas que el observador dibujó, o los cuerpos que dijo que eran",datePrecise:"precisa",dateEdtf:"imprecisa",dateHelpTitle:"Lo que acepta el texto (EDTF)",dateHelpLines:`1965 — un año
|
|
7
|
+
1965-07 — un mes
|
|
8
|
+
1965-21 — una estación (21 primavera, 22 verano, 23 otoño, 24 invierno)
|
|
9
|
+
1965-07-01 — un día
|
|
10
|
+
1965-07-01T05:00 — un día y una hora
|
|
11
|
+
05:00 — una hora, fecha desconocida
|
|
12
|
+
Terminar con ? si es incierto, ~ si es aproximado, % para ambos`,edtfModeTitle:"Escribe en su lugar una fecha imprecisa: solo un año, un mes, una hora sin fecha",locationGroup:"Lugar",observerTab:"Testigo",observationGroup:"Resumen",weatherWhilePlaying:"Pausa la grabación para indicar el tiempo — mientras se reproduce, el instante en que se escribiría se está moviendo",weatherInferred:"Fuente",weatherInferredTitle:"La meteorología no es un relato: es un hecho medible, registrado para la fecha, la hora y el lugar de la observación. Desmarca para indicar las condiciones que refirió el observador, que entonces prevalecen sobre el registro.",weatherLookingUp:"Buscando el registro…",weatherNeedsDateAndPlace:"Se necesitan una fecha completa y un lugar para buscar el registro",weatherNeedsDate:"Se necesita una fecha completa (año, mes y día) para buscar los registros meteorológicos",weatherNeedsPlace:"Se necesita un lugar con coordenadas para buscar los registros meteorológicos",weatherNoRecord:"Ningún registro para esta fecha y este lugar",weatherLookupFailed:"Registros meteorológicos inaccesibles por el momento",lightPollutionLookingUp:"Consultando el atlas…",lightPollutionFound:"{artificial} µcd/m² de luz artificial,",lightPollutionNatural:"Ninguna luz artificial aquí,",lightPollutionOutside:"Fuera del atlas (85°N a 60°S),",lightPollutionFailed:"Atlas inaccesible por ahora",lightPollutionTooEarly:"El atlas describe {atlasYear}; el cielo de {year} era más oscuro, indíquelo si se conoce",instrumentOutOfPeriod:"{name} — no es de esta fecha",instrumentCategoryEye:"Ojo desnudo",instrumentCategoryCamera:"Cámaras",instrumentCategoryDslr:"Réflex digitales",instrumentCategoryPhone:"Teléfonos",instrumentCategoryBinoculars:"Prismáticos",instrumentCategoryTelescope:"Telescopios",instrumentNotYetOnSale:"Aún no existía en {year} (a la venta desde {from})",instrumentNoLongerOnSale:"Ya no existía en {year} (a la venta hasta {to})",filterNotForInstrument:"No se puede usar con este instrumento",unitMillimetres:"mm",unitDegrees:"°",fieldOfViewReadout:"{deg}° de campo",soundSrcPlaceholder:"URL de una grabación real",referenceGroup:"Fotos",reference:"Foto",referenceTitle:"Nombre",referenceSrc:"Imagen",referenceSrcPlaceholder:"https://…/photo.jpg",referenceKind:"Tipo",referencePhoto:"Foto",referencePanorama:"Panorama (360°)",referenceCredit:"Crédito",referenceCreditUrl:"Enlace del crédito",referenceT:"Tomada en",referenceDrawing:"Dibujo encima",referenceOpacity:"Opacidad",referenceHeading:"Rumbo",referencePitch:"Cabeceo",referenceRoll:"Alabeo",referenceFov:"Campo vertical",referenceUsePose:"Usar la pose del observador",addReferenceUrl:"Desde una dirección",addReferenceFile:"Desde un archivo",deleteReference:"Eliminar foto",referenceEmbedded:"{kb} kB incrustados en la grabación — una dirección la mantendría ligera",referenceUnreachable:"No se pudo cargar la foto: revisa la dirección y que su sitio permita que otros sitios la lean",referenceRegisterHint:"Arrastra para girar la foto, rueda para cambiar su campo; «Añadir un punto de referencia» para señalar un detalle en la foto y luego el mismo en el render",referenceLandmarkPicture:"Punto de referencia {n}: haz clic en el punto de la foto",referenceLandmarkScene:"Punto de referencia {n}: haz clic en el mismo punto del render",referenceLandmarkOffPicture:"Ese clic no cae en la foto",referenceNotLoaded:"La foto aún no ha llegado",referenceLandmarksFit:"{n} puntos de referencia — desviación media de {deg}°",referenceLandmarks:"Puntos de referencia",addReferenceLandmark:"Añadir un punto de referencia",deleteReferenceLandmark:"Eliminar punto de referencia",referenceLandmarkLabel:"Nombre",referenceLandmarkLabelPlaceholder:"Árbol que tapa, valla…",referenceAdoptPose:"Adoptar como pose del observador",referenceAdoptRationale:"Medido en la foto «{title}»: {n} puntos de referencia alineados, {deg}° de desviación residual",referenceStreetSearch:"Fotos a pie de calle cercanas",referenceStreetNoPlace:"Dé primero un lugar a la grabación: las fotos se buscan alrededor",referenceStreetSearching:"Buscando fotos tomadas cerca…",referenceStreetNone:"Ninguna foto a pie de calle a menos de {m} m (Panoramax)",referenceStreetFailed:"No se pudo contactar con Panoramax",referenceStreetAdd:"Añadir",traceImport:"Trazos del investigador (KML, KMZ)",trace:"Trazo",deleteTrace:"Eliminar el trazo",traceTitle:"Nombre",traceSource:"Fuente",traceImported:"{n} importado(s) de {name}.",traceSkipped:"Omitido: {what}.",traceNone:"Ninguna línea, lugar ni contorno en este archivo.",traceFailed:"No se pudo leer este archivo.",traceKindPoint:"lugar",traceKindLine:"línea",traceKindPolygon:"contorno",referenceStreetItem:"{distance} m a {bearing}°, {date}{panorama}",referenceStreetPanorama:" — 360°",referenceStreetTitle:"Foto a pie de calle a {distance} m a {bearing}°, {date}",skyLine:"Cielo: {parts}",skyStarsEye:"estrellas hasta la magnitud {limit}, lo más tenue que alcanzaba un ojo bajo este cielo",skyStarsDeeper:"estrellas hasta la magnitud {limit} a través de un {device} — {gain} magnitudes más allá de las {eye} que alcanzaban los ojos del observador",skyStarsShallower:"estrellas hasta la magnitud {limit} a través de un {device} — {gain} magnitudes por debajo de las {eye} que alcanzaban los ojos del observador",skyStarsCatalogue:", dibujadas hasta {catalogue}, donde se detiene el catálogo de este proyecto",skyStarsNone:"ninguna estrella se distinguía en un cielo tan claro",skyDetails:"Ver los registros completos",skyDetailsHide:"Ocultar los registros",skyShowerActive:"{name} — radiante a {altitude}° sobre el horizonte, {bearing} — unos {rate}/h bajo este cielo, sobre un fondo esporádico de {sporadic}/h",skyShowerBelowHorizon:"{name} está activa, pero su radiante está bajo el horizonte — no ha podido producir nada",skyNothingActive:"ninguna lluvia de meteoros activa en esta fecha — un fondo esporádico de unos {sporadic}/h",showMeteor:"Muéstrame uno",skyComet:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}, cola de {tail}° de largo",skyCometNoTail:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}",skyCometBelowHorizon:"El {name} estaba ahí, de magnitud {magnitude}, pero bajo el horizonte — nadie aquí lo vio",skyCometInDaylight:"El {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} — pero a solo {elongation}° del Sol",showComet:"Muéstrame el cometa",skyNova:"La {name}, una estrella nueva de magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing}",skyNovaBelowHorizon:"La {name} brillaba con magnitud {magnitude}, pero bajo el horizonte: nadie aquí la vio",showNova:"Muéstrame la estrella nueva",skyEclipsePartial:"Eclipse de Sol: la Luna oculta el {percent} % del Sol a las {time}, a {altitude}° sobre el horizonte {bearing}",skyEclipseTotal:"Eclipse total de Sol: el Sol queda totalmente oculto desde las {time} durante {duration}, a {altitude}° sobre el horizonte {bearing}",skySupermoon:"Luna llena a {distance} km: {diameter}° de ancho, un {percent} % más que a su distancia media — una «superluna», y no más grande en el horizonte que en lo alto",skyMicromoon:"Luna llena a {distance} km: {diameter}° de ancho, un {percent} % menos que a su distancia media — una «microluna», y no más pequeña en el horizonte que en lo alto",skyRedMoon:"La «lune rousse»: la Luna llena de la lunación que sigue a la Pascua, a {altitude}° sobre el horizonte {bearing} — baja, y por eso enrojecida por el aire que atraviesa, y ni más grande ni más brillante que otra",skySatellitePasses:"{count} satélites cruzaron este cielo con brillo suficiente para ser vistos, el más brillante {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} a las {time}",skySatellitePassesOne:"un satélite cruzó este cielo con brillo suficiente para ser visto: {name}, magnitud {magnitude}, a {altitude}° sobre el horizonte {bearing} a las {time}",skySatelliteTrain:"entre ellos un tren de {count} Starlink lanzados el {date}",skySatellitePassesNone:"según los elementos orbitales archivados para esa fecha, ningún satélite iluminado cruzó este cielo con brillo suficiente para ser visto",skySatelliteElementsGap:"ningún elemento orbital archivado cerca de esa fecha",skyReentries:"reentradas registradas: {list}",skyReentriesMore:"{count} más",skyReentrySeen:"{name} cayó a las {time}, visto desde {place} (a {distance} km)",skyReentryObserved:"{name} cayó a las {time}, visto",skyReentryOffset:", a {minutes} min de la observación",skyReentryPredicted:"{name} cayó hacia las {time} ± {hours} h, no se sabe dónde",skyReentryDay:"{name} cayó el {date} (UTC), sin hora ni lugar conocidos",skyFireballs:"{count} bólidos registrados por la Global Meteor Network, el más brillante de magnitud {magnitude} a las {time}, a {altitude}° de altura {bearing}, a {distance} km ({stations} estaciones)",skyFireballsOne:"un bólido registrado por la Global Meteor Network: magnitud {magnitude} a las {time}, a {altitude}° de altura {bearing}, a {distance} km ({stations} estaciones)",showFireball:"Mostrar el bólido",showSatellite:"Muéstrame un satélite",skyOpticsPossible:"nubes de hielo suficientes, alrededor {source}, para {forms}",skyOpticsAlignment:" — todo salvo los anillos necesita cristales que caigan horizontales, aquí supuestos alineados al {alignment} %, ya que ningún registro lo da",skyOpticsHalo22:"un anillo de {angle}°",skyOpticsHalo46:"un anillo de {angle}°",skyOpticsParhelia:"parhelios a {angle}° a cada lado",skyOpticsTangentArc:"un arco tangente encima",skyOpticsParhelicCircle:"un círculo blanco que da la vuelta al cielo a su misma altura",skyOpticsCircumzenithal:"un arco circuncenital a {angle}° de altura",skyOpticsCircumhorizontal:"un arco circunhorizontal muy por debajo",skyOpticsPillar:"un pilar alzado sobre él",skyOpticsNoIce:"sin nubes de hielo: ni halo ni parhelios",skyOpticsHidden:"nubes de hielo en altura, pero una capa más baja entre ellas y el observador",skyOpticsSun:"del Sol",skyOpticsMoon:"de la Luna",skyBowPossible:"lluvia y sol suficientes para {forms}",skyBowMoon:"lluvia bajo una Luna iluminada al {lit} %, suficiente para {forms} — un arcoíris lunar, que el ojo ve como un arco blanco",skyGlowBand:"la Vía Láctea a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing}",skyGlowCone:"la luz zodiacal a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing}, a {elongation}° del Sol — un tenue cono de luz inclinado, de bordes difusos, desaparecido en menos de una hora",skyGlowZodiacalBand:"la banda zodiacal a {contrast}× el fondo del cielo, a {altitude}° de altura {bearing} — toda la eclíptica débilmente encendida, que no es lo que la gente cuenta",skyGlowMoon:"ni Vía Láctea ni luz zodiacal: una Luna iluminada al {lit} % mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowTwilight:"ni Vía Láctea ni luz zodiacal: el crepúsculo aún mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowTowns:"ni Vía Láctea ni luz zodiacal: el resplandor de las ciudades mantenía el cielo en {sky} magnitudes por segundo de arco cuadrado, cuando necesitan 22",skyGlowNothingUp:"cielo bastante oscuro ({sky} magnitudes por segundo de arco cuadrado), pero ni el plano galáctico ni la eclíptica estaban lo bastante altos en él",skyBowPrimary:"un arco de {radius}° de radio, con la cima a {top}° de altura",skyBowSecondary:"un segundo, más tenue, a {radius}°, con los colores invertidos",skyBowSourceTooHigh:"lluvia, pero con el astro a {altitude}° de altura ningún arco podía asomar sobre el horizonte: se sitúan a {radius}° del punto opuesto",skyBowHidden:"lluvia, pero una capa continua entre ella y la luz: ningún arco",skyBowNoSource:"lluvia, y nada iluminado para formar un arco con ella",skySatellitesLit:"la sombra de la Tierra estaba a {height} km sobre el observador, así que la órbita baja seguía al sol — {count} objetos catalogados estaban en órbita ese mes",skySatellitesLitWith:"la sombra de la Tierra estaba a {height} km sobre el observador, así que la órbita baja seguía al sol — {count} objetos catalogados estaban en órbita ese mes, entre ellos {eras}",skySatellitesShadowed:"la sombra de la Tierra estaba a {height} km sobre el observador: de los {count} objetos catalogados en órbita ese mes, nada en órbita baja estaba iluminado",skySatellitesNotYet:"aún no se había puesto nada en órbita",skySatellitesDaylight:"todo lo que estaba en órbita estaba iluminado, como siempre de día, y {eras} podían brillar más que incluso este cielo",skySatellitesDaylightOne:"todo lo que estaba en órbita estaba iluminado, como siempre de día, y {eras} podía brillar más que incluso este cielo",skyUnknown:"no se puede determinar sin una fecha y un lugar",lookAtDecor:"Mirarlo",addDecor:"Añadir",deleteDecor:"Eliminar elemento del decorado",undo:"Deshacer",redo:"Rehacer",viewAccount:"Ver el relato",noObserverRecording:"No hay URL de grabación para este observador",masks:"Oculta",masksNone:"Aún no hay fenómeno que ocultar",masksBodyFully:"oculto por este objeto",masksBodyPartly:"oculto al {share} % por este objeto",masksBodyNot:"no oculto por este objeto",modelPickerTitle:"Elegir un modelo 3D",modelPickerClose:"Cerrar",modelPickerChoose:"Elegir un modelo 3D",modelPickerUse:"Usar este modelo",modelPickerIncomplete:"No se dibuja hasta indicar el nombre y la licencia del modelo",addObserver:"Añadir observador",surveyLabel:"Decorado tomado de un levantamiento",surveySource:"Decorado tomado de",surveyDated:"Levantado el: {dates}.",surveyLaserLabel:"láser",surveyPhotoLabel:"foto aérea",surveyMapLabel:"mapa",surveyLampsLabel:"OpenStreetMap",surveyWarning:"⚠ Este decorado viene de levantamientos del {survey}, posteriores a la observación ({observation}): no es lo que había allí entonces. Consérvalo como referencia, o elimínalo.",surveyRadius:"Radio",surveyRadiusTitle:"Hasta dónde alrededor del observador se consulta el levantamiento, en metros. Un radio mayor trae edificios, puentes y líneas más lejanos; los árboles vienen del láser, que solo se consulta dentro de 150 m.",surveySourceTitle:"El levantamiento del que se toman, por sí solos, los árboles, edificios, puentes y líneas aéreas alrededor del lugar cuando das un lugar al registro: se ponen en la lista, en su lugar, altura y anchura medidos. Las coordenadas del lugar se envían a ese servicio. Ninguno deja el decorado a tu cargo. Lo que colocaste tú nunca se toca.",surveySourceNone:"Ninguno (todo a mano)",surveyBusy:"Buscando el decorado alrededor del observador…",surveyDone:"Según {source}: árboles {trees}, edificios {buildings}, puentes {bridges}, líneas eléctricas {lines}. Son los del día del levantamiento, no los de la grabación: consérvelos, muévalos o elimínelos.",surveyNone:"No se encontró ningún árbol, edificio, puente ni línea eléctrica en un radio de {radius} m.",surveyKept:"Lo que usted colocó se queda como está.",surveyUnreachable:"No se pudo contactar con el levantamiento. Inténtelo más tarde.",surveyFurniturePending:"Alumbrado público y semáforos: esperando a OpenStreetMap…",surveyFurnitureDone:"Según {source}: farolas {lamps}, semáforos {signals}, pasos de peatones {crossings}, señales {signs}.",surveyFurnitureUnavailable:"Alumbrado público y semáforos no disponibles por ahora: OpenStreetMap no responde.",surveyFurnitureRetry:"Reintentar",narrativePlaceholder:"Lo que refirió el observador, con sus propias palabras",narrativeSource:"Redactado por",narrativeNeedsSetting:'Rellena "{setting}" ({source}) para generar una reconstrucción a partir del relato',narrativeNeedsAsk:"Nada que enviar todavía",narrativeRemember:"Recordar en este dispositivo",narrativeDraft:"Generar reconstrucción",narrativeStop:"Detener",narrativeWorking:"Leyendo el relato…",narrativeApplied:"{count} campos escritos en el editor",narrativeUnchanged:"El relato no dice nada que la grabación pueda contener todavía",narrativeStated:"Lo que dijo el observador",narrativeDerived:"Deducido del relato",narrativeAssumed:"Supuesto, para que la reconstrucción funcione — compruébalo",narrativeGaps:"Lo que nada pudo resolver",narrativeErrorCredential:"No hay clave, o fue rechazada — compruébala en console.anthropic.com",narrativeErrorRateLimited:"Demasiadas solicitudes en tu cuenta: espera un momento y vuelve a pedirlo",narrativeErrorRefused:"El relato no obtuvo respuesta. Reformularlo puede ayudar; volver a pedirlo, no",narrativeErrorMalformed:"La respuesta no era un borrador utilizable — vale la pena pedirlo una vez más",narrativeErrorUnreachable:"Nada respondió: revisa la conexión",narrativeErrorRejected:"Rechazado: {detail}",observerAge:"Edad entonces",observerBirth:"Nacido el",observerPerception:{"color-vision":"Visión del color","color-vision.hint":"Cómo se ven los colores con conos distintos (Machado et al. 2009). Solo recolorea: brillo y resolución no cambian.","color-vision.type":"Tipo","color-vision.type.normal":"Típica","color-vision.type.protan":"Protán (rojo débil o ciego)","color-vision.type.deutan":"Deután (verde débil o ciego)","color-vision.type.tritan":"Tritán (azul débil o ciego)","color-vision.severity":"Gravedad",intoxication:"Alcohol","intoxication.hint":"Reduce la sensibilidad al contraste unos 0,9 dB con 0,08 % de alcohol en sangre (un estudio controlado; los resultados varían), mostrado hasta 0,1 % como máximo: un nivel mayor se registra pero se muestra como 0,1 %, ya que nada se midió por encima. La visión doble, el campo reducido y otras drogas no se modelan: ninguna fuente los cuantifica.","intoxication.bloodAlcohol":"Alcoholemia",fatigue:"Fatiga","fatigue.hint":"Solo declarada: no se ha demostrado que la falta de sueño cambie lo que recibe un ojo sano, así que la imagen no cambia. Afecta a la atención y la memoria, no a la vista.","fatigue.hoursAwake":"Despierto desde hace"},observerOccupation:"Profesión",accountSource:"Relato obtenido",accountUrl:"Fuente (URL)",accountSourceUnknown:"desconocido",accountSourceOnSite:"investigación in situ",accountSourceInterview:"entrevista en persona",accountSourceTelephone:"por teléfono",accountSourceQuestionnaire:"cuestionario",accountSourceLetter:"lo escribió el observador",accountSourceSocialMedia:"lo publicó el observador en internet",accountSourcePress:"prensa o radiodifusión",accountFollowedUp:"Recontactado",accountUnknown:"desconocido",accountYes:"sí",accountNo:"no",questionUnanswered:"Nada en esta grabación responde a una de las preguntas que una reconstrucción necesita resolver",durationRequired:"La observación necesita una duración para poder reproducirse — indícala, o una hora de fin, que puede ser aproximada",questionsUnanswered:"{count} de las preguntas que responde una reconstrucción completa quedan sin respuesta aquí",emptyDecor:"Ningún elemento del decorado",emptyMilestones:"Ningún momento",emptyReferences:"Ninguna foto",emptyReferenceLandmarks:"Ningún punto de referencia",emptyTraces:"Ningún trazado del investigador",emptyShapes:"Ninguna forma",addReference:"Añadir una foto",principalObserver:"Observador de este relato",deleteObserver:"Eliminar el observador"};export{o as sightingEditorMessages_es};
|