ascii-side-of-the-moon 1.0.9 → 1.0.10
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/cli.cjs +13 -4
- package/dist/index.cjs +9 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +9 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -598,8 +598,17 @@ function renderMoon(state, _options = {}) {
|
|
|
598
598
|
const options = _options ?? {};
|
|
599
599
|
const showHorizon = options.showHorizon !== false;
|
|
600
600
|
const nearestMoon = findNearestMoonState(state);
|
|
601
|
-
const asciiLines = nearestMoon.ascii.split("\n");
|
|
602
601
|
const dim = asciiMoonDim(nearestMoon.ascii);
|
|
602
|
+
let textureAscii = nearestMoon.ascii;
|
|
603
|
+
if (Math.abs(TEXTURE_ORIENTATION_OFFSET) > 0.1) {
|
|
604
|
+
textureAscii = rotateCharacters(
|
|
605
|
+
textureAscii,
|
|
606
|
+
TEXTURE_ORIENTATION_OFFSET,
|
|
607
|
+
dim.centerX,
|
|
608
|
+
dim.centerY
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
const asciiLines = textureAscii.split("\n");
|
|
603
612
|
const { sx, sy, sz } = phaseSunVector(
|
|
604
613
|
state.phase.phaseAngleDeg,
|
|
605
614
|
state.phase.brightLimbAngle,
|
|
@@ -670,11 +679,11 @@ function renderMoon(state, _options = {}) {
|
|
|
670
679
|
}
|
|
671
680
|
let composed = out.join("\n");
|
|
672
681
|
if (state.position?.parallacticAngle !== void 0) {
|
|
673
|
-
const
|
|
674
|
-
if (Math.abs(
|
|
682
|
+
const rotation = -state.position.parallacticAngle;
|
|
683
|
+
if (Math.abs(rotation) > 0.1) {
|
|
675
684
|
composed = rotateCharacters(
|
|
676
685
|
composed,
|
|
677
|
-
|
|
686
|
+
rotation,
|
|
678
687
|
dim.centerX,
|
|
679
688
|
dim.centerY
|
|
680
689
|
);
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var h=require('astronomy-engine');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var h__namespace=/*#__PURE__*/_interopNamespace(h);var s=h__namespace.default??h__namespace;function X($,g){let n=new Date($.getTime());return n.setDate(n.getDate()+g),n}function k($){return ($%360+360)%360}function N($){let g=s.GeoVector(s.Body.Sun,$,true),n=s.GeoVector(s.Body.Moon,$,true),B=s.EquatorFromVector(g),t=s.EquatorFromVector(n),R=(B.ra-t.ra)*15*s.DEG2RAD,r=t.dec*s.DEG2RAD,a=B.dec*s.DEG2RAD,o=Math.sin(R),i=Math.cos(R),e=o,l=Math.cos(r)*Math.tan(a)-Math.sin(r)*i,A=Math.atan2(e,l)*s.RAD2DEG;return k(A)}function Y($){let g=($%24+24)%24;return g>12&&(g-=24),g}function G($){let g=s.Illumination(s.Body.Moon,$).phase_fraction;return s.Illumination(s.Body.Moon,X($,1)).phase_fraction>g}function H($,g,n){let B=s.SiderealTime($),t=g.longitude/15,R=Y(t+B-n.ra)*15*s.DEG2RAD,r=g.latitude*s.DEG2RAD,a=n.dec*s.DEG2RAD,o=Math.sin(R),i=Math.tan(r)*Math.cos(a)-Math.sin(a)*Math.cos(R);return Math.atan2(o,i)*s.RAD2DEG}function v($,g){let n=new s.Observer(g.latitude,g.longitude,g.elevationMeters??0),B=s.Equator(s.Body.Moon,$,n,true,true),t=s.Horizon($,n,B.ra,B.dec,"normal");return {azimuth:k(t.azimuth),altitude:t.altitude,parallacticAngle:H($,g,B)}}function J($,g){let n=s.Illumination(s.Body.Moon,$),B=s.Libration($);return {date:$,phase:{phaseAngleDeg:n.phase_angle,illuminatedFraction:n.phase_fraction,isWaxing:G($),brightLimbAngle:N($)},size:{distanceKm:B.dist_km,angularDiameterDeg:B.diam_deg},libration:{elon:B.elon,elat:B.elat},position:g?v($,g):void 0}}function V($){let{phaseAngleDeg:g,illuminatedFraction:n}=$.phase,B=$.phase.isWaxing??g>90,t=(g%360+360)%360,_=t>180?360-t:t,R=10,r=10,a=8,o=.98,i=.02,e=.02;return _<=R||n>=o?"Full Moon":_>=180-r||n<=i?"New Moon":Math.abs(_-90)<=a||Math.abs(n-.5)<=e?B?"First Quarter":"Last Quarter":_<90?B?"Waxing Gibbous":"Waning Gibbous":B?"Waxing Crescent":"Waning Crescent"}var T={moons:[{index:0,distance_km:405493.5,libration_elat:-0.888,libration_elon:-0.412,ascii:`
|
|
2
2
|
|
|
3
3
|
._ . - .
|
|
4
4
|
,_++> a, +. \`-.
|
|
@@ -894,12 +894,12 @@
|
|
|
894
894
|
'FFF'"Z"@MGR^^'\`
|
|
895
895
|
|
|
896
896
|
|
|
897
|
-
`}]};var c=60,d=29,
|
|
898
|
-
`),n=1/0,
|
|
899
|
-
`),
|
|
900
|
-
`)}function
|
|
901
|
-
`),
|
|
902
|
-
`);if($.position?.parallacticAngle!==void 0){let
|
|
903
|
-
`),o=g.size.angularDiameterDeg/Math.max(1,n.height),i=n.centerY+
|
|
904
|
-
`)}function
|
|
897
|
+
`}]};var c=60,d=29,L=-45;function I($){let g=$.split(`
|
|
898
|
+
`),n=1/0,B=-1/0,t=1/0,_=-1/0;if(g.forEach((a,o)=>{let i=a.search(/\S/);if(i!==-1){let e=a.search(/\s+$/);n=Math.min(n,i),B=Math.max(B,e===-1?a.length-1:e-1),t===1/0&&(t=o),_=o;}}),n===1/0)return {width:c,height:d,centerX:Math.floor(c/2),centerY:Math.floor(d/2)};let R=B-n+1,r=_-t+1;return {width:R,height:r,centerX:n+Math.floor(R/2),centerY:t+Math.floor(r/2)}}function P($,g,n){return Math.min(n,Math.max(g,$))}function K($){return $*Math.PI/180}function S($,g,n,B=0){let t=K($),_=K(B),R;g!==void 0?R=K(g):R=K(n?270:90);let r=-Math.sin(R),a=-Math.cos(R),o=r*Math.sin(t),i=a*Math.sin(t),e=Math.cos(t),l=i*Math.cos(_)-e*Math.sin(_),A=i*Math.sin(_)+e*Math.cos(_);i=l,e=A;let W=Math.sqrt(o*o+i*i+e*e);return {sx:o/W,sy:i/W,sz:e/W}}function q($,g,n,B,t){let _=1/c,R=1/d,r=[-0.5,-0.25,0,.25,.5],a=0,o=0;for(let i of r)for(let e of r){let l=$+i*_,A=g+e*R,W=l*l+A*A;if(W>1)continue;let w=Math.sqrt(Math.max(0,1-W)),b=l*n+A*B+w*t;a+=Math.max(0,b),o++;}return o===0?0:a/o}function C($){let B=0,t=1/0;for(let _=0;_<T.moons.length;_++){let R=T.moons[_],r=Math.abs(R.distance_km-$.size.distanceKm)*1,a=Math.abs(R.libration_elat-$.libration.elat)*1e4,o=Math.abs(R.libration_elon-$.libration.elon)*1e4,i=r+a+o;i<t&&(t=i,B=_);}return T.moons[B]}var j=22/10;function p($,g,n,B){let t=(g%360+360)%360;if(Math.abs(t)<.1)return $;let _=$.split(`
|
|
899
|
+
`),R=_.length,r=_[0]?.length??0,a=n??(r-1)/2,o=B??(R-1)/2,i=t*Math.PI/180,e=Math.cos(i),l=Math.sin(i),A=Array.from({length:R},()=>Array(r).fill(" "));for(let W=0;W<R;W++)for(let w=0;w<r;w++){let b=w-a,x=(W-o)*j,f=b*e-x*l,M=b*l+x*e,y=Math.round(f+a),u=Math.round(M/j+o);if(y>=0&&y<r&&u>=0&&u<R){let E=_[u]?.[y]??" ";A[W][w]=E;}}return A.map(W=>W.join("")).join(`
|
|
900
|
+
`)}function U($,g={}){let B=(g??{}).showHorizon!==false,t=C($),_=I(t.ascii),R=t.ascii;Math.abs(L)>.1&&(R=p(R,L,_.centerX,_.centerY));let r=R.split(`
|
|
901
|
+
`),{sx:a,sy:o,sz:i}=S($.phase.phaseAngleDeg,$.phase.brightLimbAngle,$.phase.isWaxing,$.libration.elat),e=Array.from({length:d},()=>Array(c).fill(0)),l=Array.from({length:d},()=>Array(c).fill(-1)),A=Array.from({length:d},()=>Array(c).fill(false)),W=0,w=0;for(let M=0;M<d;M++)for(let y=0;y<c;y++){let u=y-_.centerX,E=M-_.centerY,m=u/(_.width/2),F=E/(_.height/2),Z=m*m+F*F;if(Z>1){e[M][y]=0,l[M][y]=-1;continue}A[M][y]=true,W++;let z=q(m,F,a,o,i);e[M][y]=z,z>0&&w++;let D=Math.sqrt(Math.max(0,1-Z));l[M][y]=m*a+F*o+D*i;}let b=Array.from({length:d},()=>Array(c).fill(false));if(w>0)for(let M=0;M<d;M++)for(let y=0;y<c;y++)b[M][y]=e[M][y]>0;else {let M=P($.phase.illuminatedFraction??0,0,1),y=Math.max(1,Math.round(M*W)),u=[];for(let E=0;E<d;E++)for(let m=0;m<c;m++)A[E][m]&&u.push({ix:m,iy:E,v:l[E][m]});u.sort((E,m)=>m.v-E.v);for(let E=0;E<Math.min(y,u.length);E++){let{ix:m,iy:F}=u[E];b[F][m]=true;}}let x=[];for(let M=0;M<d;M++){let y="",u=r[M]??"";for(let E=0;E<c;E++)b[M][E]?y+=u[E]??" ":y+=" ";x.push(y);}let f=x.join(`
|
|
902
|
+
`);if($.position?.parallacticAngle!==void 0){let M=-$.position.parallacticAngle;Math.abs(M)>.1&&(f=p(f,M,_.centerX,_.centerY));}return B?O(f,$,_):f}function O($,g,n){let B=g.position;if(!B||g.size.angularDiameterDeg<=0)return $;let t=B.altitude??0,_=g.size.angularDiameterDeg/2,R=t+_;if(t-_>=0)return $;let a=$.split(`
|
|
903
|
+
`),o=g.size.angularDiameterDeg/Math.max(1,n.height),i=n.centerY+t/o;i=Math.round(P(i,0,d-1));let e;return R<=0?e=`${Math.abs(t).toFixed(1).replace(/\.0$/,"")}-deg-below-horizon`:e="horizon",a[i]=$$(e),a.join(`
|
|
904
|
+
`)}function $$($){let n=`--${$.trim().replace(/\s+/g,"-")}--`;if(n.length>c&&(n=n.slice(0,c)),n.length===c)return n;let B=c-n.length,t=Math.floor(B/2),_=B-t;return "-".repeat(t)+n+"-".repeat(_)}exports.getMoonPhase=V;exports.getMoonState=J;exports.renderMoon=U;//# sourceMappingURL=index.cjs.map
|
|
905
905
|
//# sourceMappingURL=index.cjs.map
|