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 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 totalRotation = -state.position.parallacticAngle + TEXTURE_ORIENTATION_OFFSET;
674
- if (Math.abs(totalRotation) > 0.1) {
682
+ const rotation = -state.position.parallacticAngle;
683
+ if (Math.abs(rotation) > 0.1) {
675
684
  composed = rotateCharacters(
676
685
  composed,
677
- totalRotation,
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 T=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 T__namespace=/*#__PURE__*/_interopNamespace(T);var s=T__namespace.default??T__namespace;function p($,g){let n=new Date($.getTime());return n.setDate(n.getDate()+g),n}function z($){return ($%360+360)%360}function P($){let g=s.GeoVector(s.Body.Sun,$,true),n=s.GeoVector(s.Body.Moon,$,true),t=s.EquatorFromVector(g),_=s.EquatorFromVector(n),B=(t.ra-_.ra)*15*s.DEG2RAD,M=_.dec*s.DEG2RAD,a=t.dec*s.DEG2RAD,o=Math.sin(B),i=Math.cos(B),e=o,m=Math.cos(M)*Math.tan(a)-Math.sin(M)*i,A=Math.atan2(e,m)*s.RAD2DEG;return z(A)}function D($){let g=($%24+24)%24;return g>12&&(g-=24),g}function X($){let g=s.Illumination(s.Body.Moon,$).phase_fraction;return s.Illumination(s.Body.Moon,p($,1)).phase_fraction>g}function N($,g,n){let t=s.SiderealTime($),_=g.longitude/15,B=D(_+t-n.ra)*15*s.DEG2RAD,M=g.latitude*s.DEG2RAD,a=n.dec*s.DEG2RAD,o=Math.sin(B),i=Math.tan(M)*Math.cos(a)-Math.sin(a)*Math.cos(B);return Math.atan2(o,i)*s.RAD2DEG}function Y($,g){let n=new s.Observer(g.latitude,g.longitude,g.elevationMeters??0),t=s.Equator(s.Body.Moon,$,n,true,true),_=s.Horizon($,n,t.ra,t.dec,"normal");return {azimuth:z(_.azimuth),altitude:_.altitude,parallacticAngle:N($,g,t)}}function G($,g){let n=s.Illumination(s.Body.Moon,$),t=s.Libration($);return {date:$,phase:{phaseAngleDeg:n.phase_angle,illuminatedFraction:n.phase_fraction,isWaxing:X($),brightLimbAngle:P($)},size:{distanceKm:t.dist_km,angularDiameterDeg:t.diam_deg},libration:{elon:t.elon,elat:t.elat},position:g?Y($,g):void 0}}function H($){let{phaseAngleDeg:g,illuminatedFraction:n}=$.phase,t=$.phase.isWaxing??g>90,_=(g%360+360)%360,R=_>180?360-_:_,B=10,M=10,a=8,o=.98,i=.02,e=.02;return R<=B||n>=o?"Full Moon":R>=180-M||n<=i?"New Moon":Math.abs(R-90)<=a||Math.abs(n-.5)<=e?t?"First Quarter":"Last Quarter":R<90?t?"Waxing Gibbous":"Waning Gibbous":t?"Waxing Crescent":"Waning Crescent"}var K={moons:[{index:0,distance_km:405493.5,libration_elat:-0.888,libration_elon:-0.412,ascii:`
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,J=-45;function V($){let g=$.split(`
898
- `),n=1/0,t=-1/0,_=1/0,R=-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),t=Math.max(t,e===-1?a.length-1:e-1),_===1/0&&(_=o),R=o;}}),n===1/0)return {width:c,height:d,centerX:Math.floor(c/2),centerY:Math.floor(d/2)};let B=t-n+1,M=R-_+1;return {width:B,height:M,centerX:n+Math.floor(B/2),centerY:_+Math.floor(M/2)}}function L($,g,n){return Math.min(n,Math.max(g,$))}function x($){return $*Math.PI/180}function Q($,g,n,t=0){let _=x($),R=x(t),B;g!==void 0?B=x(g):B=x(n?270:90);let M=-Math.sin(B),a=-Math.cos(B),o=M*Math.sin(_),i=a*Math.sin(_),e=Math.cos(_),m=i*Math.cos(R)-e*Math.sin(R),A=i*Math.sin(R)+e*Math.cos(R);i=m,e=A;let W=Math.sqrt(o*o+i*i+e*e);return {sx:o/W,sy:i/W,sz:e/W}}function I($,g,n,t,_){let R=1/c,B=1/d,M=[-0.5,-0.25,0,.25,.5],a=0,o=0;for(let i of M)for(let e of M){let m=$+i*R,A=g+e*B,W=m*m+A*A;if(W>1)continue;let w=Math.sqrt(Math.max(0,1-W)),b=m*n+A*t+w*_;a+=Math.max(0,b),o++;}return o===0?0:a/o}function S($){let t=0,_=1/0;for(let R=0;R<K.moons.length;R++){let B=K.moons[R],M=Math.abs(B.distance_km-$.size.distanceKm)*1,a=Math.abs(B.libration_elat-$.libration.elat)*1e4,o=Math.abs(B.libration_elon-$.libration.elon)*1e4,i=M+a+o;i<_&&(_=i,t=R);}return K.moons[t]}var k=22/10;function q($,g,n,t){let _=(g%360+360)%360;if(Math.abs(_)<.1)return $;let R=$.split(`
899
- `),B=R.length,M=R[0]?.length??0,a=n??(M-1)/2,o=t??(B-1)/2,i=_*Math.PI/180,e=Math.cos(i),m=Math.sin(i),A=Array.from({length:B},()=>Array(M).fill(" "));for(let W=0;W<B;W++)for(let w=0;w<M;w++){let b=w-a,F=(W-o)*k,r=b*e-F*m,E=b*m+F*e,u=Math.round(r+a),y=Math.round(E/k+o);if(u>=0&&u<M&&y>=0&&y<B){let l=R[y]?.[u]??" ";A[W][w]=l;}}return A.map(W=>W.join("")).join(`
900
- `)}function C($,g={}){let t=(g??{}).showHorizon!==false,_=S($),R=_.ascii.split(`
901
- `),B=V(_.ascii),{sx:M,sy:a,sz:o}=Q($.phase.phaseAngleDeg,$.phase.brightLimbAngle,$.phase.isWaxing,$.libration.elat),i=Array.from({length:d},()=>Array(c).fill(0)),e=Array.from({length:d},()=>Array(c).fill(-1)),m=Array.from({length:d},()=>Array(c).fill(false)),A=0,W=0;for(let r=0;r<d;r++)for(let E=0;E<c;E++){let u=E-B.centerX,y=r-B.centerY,l=u/(B.width/2),f=y/(B.height/2),h=l*l+f*f;if(h>1){i[r][E]=0,e[r][E]=-1;continue}m[r][E]=true,A++;let Z=I(l,f,M,a,o);i[r][E]=Z,Z>0&&W++;let j=Math.sqrt(Math.max(0,1-h));e[r][E]=l*M+f*a+j*o;}let w=Array.from({length:d},()=>Array(c).fill(false));if(W>0)for(let r=0;r<d;r++)for(let E=0;E<c;E++)w[r][E]=i[r][E]>0;else {let r=L($.phase.illuminatedFraction??0,0,1),E=Math.max(1,Math.round(r*A)),u=[];for(let y=0;y<d;y++)for(let l=0;l<c;l++)m[y][l]&&u.push({ix:l,iy:y,v:e[y][l]});u.sort((y,l)=>l.v-y.v);for(let y=0;y<Math.min(E,u.length);y++){let{ix:l,iy:f}=u[y];w[f][l]=true;}}let b=[];for(let r=0;r<d;r++){let E="",u=R[r]??"";for(let y=0;y<c;y++)w[r][y]?E+=u[y]??" ":E+=" ";b.push(E);}let F=b.join(`
902
- `);if($.position?.parallacticAngle!==void 0){let r=-$.position.parallacticAngle+J;Math.abs(r)>.1&&(F=q(F,r,B.centerX,B.centerY));}return t?U(F,$,B):F}function U($,g,n){let t=g.position;if(!t||g.size.angularDiameterDeg<=0)return $;let _=t.altitude??0,R=g.size.angularDiameterDeg/2,B=_+R;if(_-R>=0)return $;let a=$.split(`
903
- `),o=g.size.angularDiameterDeg/Math.max(1,n.height),i=n.centerY+_/o;i=Math.round(L(i,0,d-1));let e;return B<=0?e=`${Math.abs(_).toFixed(1).replace(/\.0$/,"")}-deg-below-horizon`:e="horizon",a[i]=O(e),a.join(`
904
- `)}function O($){let n=`--${$.trim().replace(/\s+/g,"-")}--`;if(n.length>c&&(n=n.slice(0,c)),n.length===c)return n;let t=c-n.length,_=Math.floor(t/2),R=t-_;return "-".repeat(_)+n+"-".repeat(R)}exports.getMoonPhase=H;exports.getMoonState=G;exports.renderMoon=C;//# sourceMappingURL=index.cjs.map
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