
ãã®èšäºã§ã¯ã3次å
ã·ãŒã³ã®ã¬ã³ããªã³ã°ã¢ã«ãŽãªãºã ãExcelã®æ°åŒïŒãã¯ããªãïŒã«ç§»æ€ããæ¹æ³ã説æããŸãã
ã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ã«æ
£ããŠããªã人ã®ããã«ãç§ã¯ãã¹ãŠã®ã¹ããããã§ããã ãç°¡åãã€ç°¡åã«èª¬æããããšããŸããã ååãšããŠãæ°åŒãçè§£ããã«ã¯ãæ°åŠã®åŠæ ¡ã³ãŒã¹ã®ç¥èïŒ+ 3次å
ãããªãã¯ã¹ã«ãã¯ãã«ãæããèœåïŒã§ååã§ãã
ãŸããä»»æã®åœ¢ç¶ã®æ°åŒã®äœæãç·Žç¿ããŠExcelãã¡ã€ã«ãçæã§ããå°ããªWebã¢ããªã±ãŒã·ã§ã³ãäœæããŸããã
泚æïŒã«ããã®äžã®19æã®åçãš3æã®ã¢ãã¡ãŒã·ã§ã³ã
ã©ããã
äžéšã®Excelãã¡ã€ã«ã§ã¯ã次ã®ã»ã«ã倿Žã§ããŸãã
alpha:
床åäœã®ã«ã¡ã©ã®æ°Žå¹³å転ãbeta:
床åäœã®ã«ã¡ã©ã®åçŽå転ãdist:
ã«ã¡ã©ããåç¹ãŸã§ã®è·é¢ãfov:
ã«ã¡ã©ãããºãŒã ãããŸãã
ã«ã¡ã©ãå転ãããã«ã¯ãExcelã«ãã¡ã€ã«ã倿Žããèš±å¯ãäžããå¿
èŠããããŸãã
ObservableHQããExcelãã¡ã€ã«ãããŠã³ããŒãããå Žåãã»ã«ã¯æåã§ãã€ã³ãããå¿
èŠããããŸãã ãã¹ãŠã®å°ããªæ£æ¹åœ¢ã®ã»ã«ãéžæãããæ¡ä»¶ä»ãæžåŒèšå®ãâãã«ã©ãŒã¹ã±ãŒã«ããéžæããå¿
èŠããããŸãã
ã¬ã€ããŒãã³ã°
ã¬ã€ããŒãã³ã°ã¢ã«ãŽãªãºã ã¯ããã¢ã·ãŒã³çšã®ã³ã³ãã¯ããª3次å
ãšã³ãžã³ã«é¢ãã
ã2ã€ã®äžè§åœ¢ã®ããäžçã®ã¬ã³ããªã³ã°ãã®
ãã¬ãŒã³ããŒã·ã§ã³ã®åŸã2008幎ã«ã€ããŽãã¬ã¹ã«ãã£ãŠæ®åããŸããã
ãã®åŸã
IñigoQuilezãShadertoyã® Webãµã€ããäœæãã
ããã«æçš¿ãããäœæ¥ã®ã»ãšãã©ã説æãããææ³ã䜿çšããŠããŸãã ããã«ãããäŸãã°
ãã®ã®ã£ã©ãªãŒã®ãããªãã©ããªã¢ãªã¹ãã£ãã¯ãªã·ãŒã³ãäœæã§ããããšãããããŸããã
ã¬ã€ããŒãã³ã°ã¯éåžžã«å®è£
ããããå¹ççãªã¢ã«ãŽãªãºã ã§ãéåžžã«è€éãªã·ãŒã³ãã¬ã³ããªã³ã°ã§ããŸãã ãªãããã¯ãããªã«ãŒãã§äœ¿çšãããªãã®ã§ããïŒ äºå®ããããªã«ãŒãã¯ãã¬ã€ããŒãã³ã°ãããã»ã©å¹æçã§ã¯ãªãäžè§åœ¢ã§æ§æããã3次å
ã®å³åœ¢ãæ±ãããã«ç ãæŸãŸãããŠããŸãã
æŽæ°ïŒãã®æ¹æ³ã®æ¬ ç¹ã«ã€ããŠã¯ã
DrZlodbergããã®
ãã®ã³ã¡ã³ããåç
§ããŠãã ããã
ãšã³ãžã³ã®åç
- ãªããžã§ã¯ãã¯é¢æ°ãšããŠèšè¿°ãããŸãã
- çµæã®åãã¯ã»ã«ãã«ã¡ã©ããåºãå
ç·ãšäžèŽãããŸãã
- åå
ç·ã«ã€ããŠããªããžã§ã¯ããšã®äº€å·®ç¹ã®åº§æšãèŠã€ããŸãã
- 亀ç¹ã䜿çšããŠããã¯ã»ã«ã®è²ã決å®ããŸãã
äœããã®åœ¢ã§ãããããã¹ãŠã®ãµãã¿ã¹ã¯ã¯3次å
ãšã³ãžã³ã§è§£æ±ºããããšæããŸãã
ããããã£ã®èª¬æ
3次å
ãªããžã§ã¯ããèšè¿°ããæ¹æ³ã¯3ã€ãããŸãã
- ã«ã¡ã©ããåºãå
ç·ã«ãã£ãŠãªããžã§ã¯ããšã®äº€ç¹ïŒãŸãã¯ãããšãã°ããã®äžã®æ¥ç·ã®æ¹åïŒãè¿ãæç€ºçãªæ°åŒã
- ã¡ã³ããŒã·ããæ©èœã 空éå
ã®ãã€ã³ãããšã«ããªããžã§ã¯ãã«å±ããŠãããã©ãããå ±åããŸãã
- 宿©èœã ãªããžã§ã¯ãã®å
åŽã®ãã€ã³ãã®å Žåã¯è² ã§ãå€åŽã®ãã€ã³ãã¯æ£ã§ãã
ãã®èšäºã§ã¯ã3çªç®ã®ãªãã·ã§ã³ã®ç¹å¥ãªã±ãŒã¹ã
笊å·ä»ãè·é¢é¢æ°ïŒSDFïŒã䜿çšããŸãã
SDFã¯ç©ºéå
ã®ãã€ã³ããåãåãããªããžã§ã¯ãå
ã®æãè¿ããã€ã³ããŸã§ã®è·é¢ãè¿ããŸãã å
éšã®ãã€ã³ãã®å Žåã¯ããã€ãã¹èšå·ãä»ãããªããžã§ã¯ãã®å¢çãŸã§ã®è·é¢ã«çãã
ããŒã ãšãªããžã§ã¯ãã®äº€å·®ç¹ãèŠã€ãã
ã«ã¡ã©ããã®å
ç·ãããããªããžã§ã¯ããšã®äº€ç¹ãèŠã€ããããšããŸãã
ãã®ç¹ãèŠã€ããã«ã¯ãããã€ãã®æ¹æ³ããããŸãã
- ç¹å®ã®ã¹ãããã§ããŒã äžã®ãã€ã³ããééããŸãã
- ãªããžã§ã¯ãã®å
åŽãšå€åŽã«ãã€ã³ããããããã€ããªæ€çŽ¢ãå®è¡ããŠäº€å·®ãæå®ããŸãã
- ãŸãã¯ãå
ç·ã§å¶éãããSDF颿°ïŒãªããžã§ã¯ãå
éšã§ã¯è² ãå€éšã§ã¯æ£ïŒã®æ ¹ãèŠã€ããããã®æ¹æ³ãéå§ããŸãã
ããããããã§ã¯å¥ã®æ¹æ³ã䜿çšããŸãïŒ
Ray Marching ã
ããã¯ãSDFã§ã®ã¿æ©èœããåçŽãªã¢ã«ãŽãªãºã ã§ãã
颿°ã«ãã£ãŠéå§ããã®è·é¢ã§å
ç·ããã©ã¡ãŒã¿ãŒåããŸããã
rayïŒtïŒ=ïŒxãyãzïŒ ã
ãããã
å
ç·ïŒ0ïŒ -ããã¯ã«ã¡ã©èªäœã§ãã ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- t=0
- ç¹°ãè¿ã N åïŒ
- t=t+SDFïŒrayïŒtïŒïŒ
- ãã t<TMax ãã®åŸæ»ããŸã å
ç·ïŒtïŒ ããã§ãªããã°ãããŒã ããªããžã§ã¯ããšäº€å·®ããªãããšãéç¥ããŸãã
ããã«
N äœè£ãããååŸ©åæ°ã
以äž
N ãã¢ã«ãŽãªãºã ãããæ£ç¢ºã«ãªããŸãã
æ°
TMax ããã¯ããªããžã§ã¯ããèŠã€ããããšãã§ããã«ã¡ã©ããã®è·é¢ã§ãã
ã¢ã«ãŽãªãºã ãæ©èœããçç±
ã¢ã«ãŽãªãºã ã¯åžžã«ãªããžã§ã¯ããšã®äº€ç¹ã«å°éããŸããïŒ ãªããžã§ã¯ãã¯è€éãªåœ¢ç¶ãæã€ããšãã§ããä»ã®éšåã¯ããŒã ã«è¿ã¥ããããšãã§ããã¢ã«ãŽãªãºã ã亀差ç¹ã«åæããã®ãé²ããŸãã å®éãããã¯ã§ããŸããããªããžã§ã¯ãã®ä»ã®éšåã¯ãã¬ã€ãããŒã以å€ã®è·é¢ã«ããå¿
èŠããããŸãïŒããã§ãªããã°ã亀差ããŸãïŒã
delta>0 ã æ¬¡ã«ãSDF颿°ã倧ãããªããŸã
\ãã«ã¿ å
ç·ã®ä»»æã®ç¹ïŒäº€å·®ç¹ã«éåžžã«è¿ãç¹ãé€ãïŒã ãããã£ãŠãé
ããæ©ãã圌ã¯äº€å·®ç¹ã«è¿ã¥ããŸãã
äžæ¹ãã¢ã«ãŽãªãºã ãç¹å®ã®ãã€ã³ãã«åæããå Žåã飿¥ããå埩éã®è·é¢ã¯ãŒãã«ãªãåŸåããããŸã
\å³ç¢å° SDFïŒãªããžã§ã¯ãã®æãè¿ãç¹ãŸã§ã®è·é¢ïŒããŒãã«ãªãåŸåããããŸã
\å³ç¢å° éçã«
SDF=0\å³ç¢å° ã¢ã«ãŽãªãºã ã¯ãããŒã ãšãªããžã§ã¯ãã®äº€å·®ç¹ã«åæããŸãã
亀ç¹ã®ãã¯ã»ã«ã®è²ãååŸãã
åãã¯ã»ã«ã«ã€ããŠããªããžã§ã¯ããšã®äº€ç¹ãèŠã€ãããšæ³åããŠãã ããã ãããã®å€ïŒã€ãŸããã«ã¡ã©ãã亀差ç¹ãŸã§ã®è·é¢ïŒãçŽæ¥æç»ããŠããããã®åçãååŸã§ããŸãã

ããã¯Excelã䜿çšããŠååŸããããã®ã§ãããæªããªãããšãèãããšã ããããè²ã人çã®ãªããžã§ã¯ããèŠããããªãã®ã«ããããšã¯äžå¯èœãã©ãããç¥ãããã§ãã
ã³ã³ãã¥ãŒã¿ã°ã©ãã£ãã¯ã¹ã§ã¯ãè²ãèšç®ããåºæ¬çãªæ¹æ³ã¯
ãã©ã³ã·ã§ãŒãã£ã³ã°ã§ãã Phongã«ããã°ãçµæã®è²ã¯ãèæ¯ããã©ãŒãæ¡æ£ã®3ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã ãã©ããªã¢ãªã¹ãã£ãã¯ã¬ã³ããªã³ã°ã«åªããŠããªããšããäºå®ãèãããšãæ¡æ£ã³ã³ããŒãã³ãã®ã¿ã䜿çšããã°ååã§ãã ãã®ã³ã³ããŒãã³ãã®åŒã¯ã
ã©ã³ããŒãã®æ³åã«åŸãããã¯ã»ã«ã®è²ã¯ã衚é¢ã®æ³ç·ãšå
æºã®æ¹åã®éã®è§åºŠã®
äœåŒŠã«æ¯äŸããããšã瀺ããŠããŸãã
ããã«ãèšç®ãç°¡çŽ åããããã«ãå
æºãšã«ã¡ã©ãåãã§ãããšä»®å®ããŸãã æ¬¡ã«ãå®éã«ã¯ãã«ã¡ã©ããã®ããŒã ãšãªããžã§ã¯ãã®è¡šé¢ã®éã®è§åºŠã®ãµã€ã³ãèŠã€ããå¿
èŠããããŸãã
æãŸããè§åºŠ
varphi å³é¢ã§1ã€ã®å匧ãããŒã¯ããŸããã ãã®ãµã€ã³ã®å€ã¯æ¬¡ã®ããã«ç€ºãããŸã
k ã
éåžžãã¬ã€ããŒãã³ã°æ³ã䜿çšããå Žåããªããžã§ã¯ãã®æ³ç·ãèŠã€ããã«ã¯ãæ¬¡ã®æé ãå®è¡ããŸãïŒäº€å·®ç¹ã®é£ã®6ç¹ã§SDFå€ãèšç®ãïŒç¹ã®æ°ã4ã«æžããã®ã¯ç°¡åã§ãïŒããã®é¢æ°ã®åŸé
ãèŠã€ããŸãã ããã¯Excelã«ãšã£ãŠèšç®ãå€ãããããã«æããã®ã§ãåžæã®è§åºŠãç°¡åã«èŠã€ããããšæããŸãã
ã¢ã«ãŽãªãºã ã®åæçãèŠããšãããŒã ãšãªããžã§ã¯ãéã®è§åºŠããŸã£ããã§ããã°ã1åã®å埩ã§ååã§ããããšãããããŸãã è§åºŠãå°ããå Žåãã¢ã«ãŽãªãºã ã¯éåžžã«ãã£ããåæããŸãã
ã¢ã«ãŽãªãºã ã®åæçã«åºã¥ããŠã衚é¢ã«å¯Ÿããè§åºŠã«é¢ããæ
å ±ãååŸããããšã¯å¯èœã§ããïŒ ãã®å Žåã远å ã®èšç®ã¯ãŸã£ããå¿
èŠãããŸãããåã®å埩ã®å€ãåæããã ãã§ååã§ãã
å³é¢ãæããŸãã 瀺ã
In ãããŠ
In+1 -ã¢ã«ãŽãªãºã ã®é£æ¥ããå埩ã§åŸããããã€ã³ãã ãã€ã³ãããªããžã§ã¯ãã«ååã«è¿ãããã¬ãŒã³ãã€ãŸãæ€çŽ¢ããè§åºŠã«çœ®ãæããããšãã§ãããšä»®å®ããŸãã ããã
R=SDFïŒInïŒ ã
r=SDFïŒIn+1ïŒ -ãã€ã³ãããã®è·é¢
In ãããŠ
In+1 é£è¡æ©ã«ã 次ã«ãã¢ã«ãŽãªãºã ã«åŸã£ãŠãéã®è·é¢
In ãããŠ
In+1 çãã
R ã

äžæ¹ã
X å
ç·ãšå³åœ¢ã®äº€ç¹ã§ã
InX=R/k ããããŠ
In+1X=r/k ãããã£ãŠ
R=InIn+1=InXâIn+1X= fracRârk
k= fracRârR=1â fracrR=1â fracSDFïŒIn+1ïŒSDFïŒInïŒ
ã€ãŸãããã¯ã»ã«åŒ·åºŠã¯ã1ãã飿¥ããå埩ã®SDF颿°ã®æ¯çãåŒãããã®ã«çãããªããŸãïŒ
ã·ã³ãã«ãªåœ¢ç¶ã説æããŸã
çäœãç«æ¹äœãããŒã©ã¹ã®SDFã®äŸïŒ
sqrtx2+y2+z2âr |  |
maxïŒ|x|ã|y|ã|z|ïŒâside/2 |  |
sqrtïŒ sqrtx2+z2âRïŒ2+y2âr |  |
ã·ã§ã€ãã¯ãè»žã«æ²¿ã£ãŠç§»åããã³å§çž®ã§ããŸãã
ãã¥ãŒãïŒxãy+0.3ãzïŒ |  |
ãã¥ãŒãïŒxã2 cdotyãzïŒ |  |
ã·ã§ã€ããçµåãäº€å·®ãæžç®ããããšãã§ããŸãã ã€ãŸããSDFã¯
æ§é ãœãªãããžãªã¡ããªã®åºæ¬æäœããµããŒãããŸãã
minïŒçäœïŒxãyãzïŒãç«æ¹äœïŒxãyãzïŒïŒ |  |
maxïŒçäœïŒxãyãzïŒãç«æ¹äœïŒxãyãzïŒïŒ |  |
maxïŒâsphereïŒxãyãzïŒãcubeïŒxãyãzïŒïŒ |  |
æ³šææ·±ãèªè
ã¯ãããã€ãã®å³åœ¢ïŒããšãã°ãç«æ¹äœïŒãšäžéšã®æäœïŒããšãã°ãå§çž®ïŒã§ãäžèšã®åŒãåžžã«ãªããžã§ã¯ãã®æãè¿ãç¹ãŸã§ã®è·é¢ãè¿ãããã§ã¯ãªãããšã«æ°ã¥ãå ŽåããããŸããã€ãŸããæ£åŒã«ã¯SDFã§ã¯ãããŸããã ããã«ããããããããããã¯ãŸã SDFãšã³ãžã³å
¥åã«äŸçµŠã§ããæ£ãã衚瀺ãããããšã倿ããŸããã
ããã¯SDFã§ã§ããããšã®ã»ãã®äžéšã§ãã圢ç¶ãšæäœã®å®å
šãªãªã¹ãã¯
www.iquilezles.org/www/articles/distfunctions/distfunctions.htmã«ãããŸããäžèšã®ãã¹ãŠã®åŒãçµã¿åãããŠãæåã®å³ãååŸããŸãã
minïŒ quad maxïŒ|x|â0.3ã|y|â0.3ã|z|â0.3ãâ sqrtx2+y2+z2+0.375ïŒã quad sqrtïŒ sqrtïŒxâ0.25ïŒ2+ïŒzâ0.25ïŒ2â0.25ïŒ2+y2â0.05ïŒ |  |
ã±ãã«åŒ
ãããã¯ããå°ãè€éã§ãïŒèšç»ãå¿
èŠã§ã

åŒãæ³šææ·±ãæžãçããŸãã
minïŒ quad sqrtx2+ïŒyâ0.27ïŒ2+z2â0.05 quad sqrtx2+2.5 cdoty2+z2â0.4ã quad sqrtïŒ sqrtx2+z2â0.3ïŒ2+ïŒyâ0.18ïŒ2â0.02ã quad maxïŒ qquadx+yâ0.7ã qquadây+0.09ã qquad sqrtïŒ sqrtïŒxâ0.55ïŒ2+ïŒyâ0.09ïŒ2ïŒâ0.12+ïŒzâ0.1ïŒ2â0.04ã quadïŒã quad maxïŒ qquadâïŒây+0.09ïŒã qquad sqrtïŒ sqrtïŒxâ0.35ïŒ2+ïŒyâ0.09ïŒ2â0.1ïŒ2+ïŒzâ0.1ïŒ2â0.04ã quadïŒãïŒãããŠãåžæã®è§åºŠãéžæããŸãã å®äºïŒ
ã«ã¡ã©
æ®ã£ãŠããã®ã¯ãç»é¢äžã®ç¹å®ã®ãã¯ã»ã«ã«ã€ããŠãã«ã¡ã©ããåºãŠãã空éå
ã®å¯Ÿå¿ããå
ç·ãèŠã€ããããšã ãã§ãã ããæ£ç¢ºã«ã¯ãã«ã¡ã©ãŸã§ã®è·é¢ã§ãã®ããŒã ã®ãã€ã³ããèŠã€ããããšãã§ããå¿
èŠããããŸãã ã€ãŸãã颿°ãå¿
èŠã§ã
rayïŒsãtãdïŒ ã©ãã§
sãt ãã¯ã»ã«ã®åº§æšã§ããã
d -ããŒã ã®éå§ç¹ããã®è·é¢ïŒã«ã¡ã©ïŒã
èšç®ã®äŸ¿å®äžããã¯ã»ã«ã®åº§æšã¯ç»é¢ã®äžå¿ãåºæºã«ããŠèšå®ãããŸãã ç»é¢ã
è¡ è¡ãš
cols åãæã
ã¯å
ã®åº§æšãæåŸ
ãã
s in left[â fraccols2ã fraccols2 right]ãt in left[â fracrows2ã fracrows2\å³]
次ã«ãã«ã¡ã©ã®æåœ±ã®ã¿ã€ããæ±ºå®ããå¿
èŠããããŸãïŒçŽäº€ãé è¿æ³ããŸãã¯ãéçŒãã å®è£
ã®è€éãã«é¢ããŠã¯ããããã¯ã»ãŒåãã§ãããå®éã«ã¯æãææãªãã®ãæãé »ç¹ã«äœ¿çšããããããããã䜿çšããŸãã

ãã®ç« ã®ã»ãšãã©ã®èšç®ã¯ãããšãã°ã«ã¡ã©ãããå°ç¹ã«çœ®ãããšã§åé¿ã§ããã¯ãã§ãã
ïŒ1ã0ã0ïŒ è»žã«æ²¿ã£ãæ¹åä»ã
X ã ããããæ°åãè»žã«æ²¿ã£ãŠæŽåããŠãããšããäºå®ãèæ
®ãããšãçµæã¯ããŸãé¢çœããªãè§åºŠã«ãªããŸãã ãã®ãããç«æ¹äœã®å Žåãæ£æ¹åœ¢ãšèŠãªãããŸãã
ã«ã¡ã©ãå転ãããæ©èœãæäŸããã«ã¯ã
ãªã€ã©ãŒè§ã䜿çšããŠå€ãã®èšç®ãæ
éã«å®è¡ããå¿
èŠããããŸãã ãããã£ãŠãå
¥åã§3ã€ã®å€æ°ãååŸããŸããè§åºŠ
alpha è§åºŠ
\ããŒã¿ ãšè·é¢
dist ã ãããã¯ã«ã¡ã©ã®äœçœ®ãšæ¹åã®äž¡æ¹ã決å®ããŸãïŒã«ã¡ã©ã¯åžžã«åç¹ãèŠãŸãïŒã
WolframAlphaã䜿çšããŠãå転è¡åãèŠã€ããŸãã
beginpmatrixxyz endpmatrix= underbrace beginpmatrix cosïŒ alphaïŒ cosïŒ betaïŒïŒâ cosïŒ alphaïŒ sinïŒ betaïŒïŒ sinïŒaïŒ sinïŒ betaïŒïŒ cosïŒ betaïŒïŒ0â cosïŒ betaïŒ sinïŒ alphaïŒïŒ sinïŒ alphaïŒ sinïŒ betaïŒïŒ cosïŒ alphaïŒ endpmatrixMïŒ alphaã betaïŒ beginpmatrixxâ²yâ²zâ² endpmatrix
ãã¯ãã«ã«é©çšããå Žå
ïŒdistã0ã0ïŒ ãã«ã¡ã©ã®åº§æšãååŸããŸãïŒãã€ãã¹ãæ¶ããå Žæãèããªãã§ãã ããïŒïŒ
beginpmatrixcamXcamYcamZ endpmatrix=MïŒ alphaã betaïŒ beginpmatrixdist00 endpmatrix=dist beginpmatrix cosïŒ alphaïŒ cdot cosïŒ betaïŒ sinïŒ betaïŒ sinïŒ alphaïŒ cdot cosïŒ betaïŒ endpmatrix

åŸç¶ã®èšç®ã¯ãéèŠæåœ±ã«åºæã®ãã®ã«ãªããŸãã äž»ãªãªããžã§ã¯ãã¯
ç»é¢ã§ã ïŒå³ã§ã¯èµ€ãã€ã¿ãªãã¯äœã§ã¯ããã¹ãïŒã ããã¯ãã«ã¡ã©ã®åã«ããè·é¢ã«ããæ³åäžã®é·æ¹åœ¢ã§ããããæ³åã®ãšãããéåžžã®ç»é¢ã®ãã¯ã»ã«ãš1察1ã§å¯Ÿå¿ããŠããŸãã ã«ã¡ã©ã¯å®éã«ã¯åº§æšãæã€åãªããã€ã³ãã§ã
ïŒcamXãcamYãcamZïŒ ã ãã¯ã»ã«ã«å¯Ÿå¿ããå
ç·ã¯ãã«ã¡ã©ã®ãã€ã³ãããå§ãŸãã
ç»é¢äžã®å¯Ÿå¿ãããã€ã³ããééã
ãŸã ã
ç»é¢ã«ã¯æ£ç¢ºãªå Žæãšãµã€ãºããããŸããã ããæ£ç¢ºã«ã¯ããããã¯ã«ã¡ã©ãŸã§ã®è·é¢ã«äŸåããŸããç»é¢ãããã«ç§»åããå Žåã¯ãããã«è¡ãå¿
èŠããããŸãã ãããã£ãŠãã«ã¡ã©ããã¹ã¯ãªãŒã³ãŸã§ã®è·é¢ã¯1ã§ããããšã«åæããŸãããã®åŸããã¯ãã«ã®å€ãèšç®ã§ããŸã
ïŒx0ãy0ãz0ïŒ ã«ã¡ã©ã®ãã€ã³ããšç»é¢ã®äžå¿ãæ¥ç¶ããŸãïŒã«ã¡ã©ã®äžå¿ãšåãã§ãã
dist ã§ã
â1 ïŒïŒ
beginpmatrixx0y0z0 endpmatrix=MïŒ alphaã betaïŒ beginpmatrixâ100 endpmatrix=â beginpmatrix cosïŒ alphaïŒ cdot cosïŒ betaïŒ sinïŒ betaïŒ sinïŒ alphaïŒ cdot cosïŒ betaïŒ endpmatrix
次ã«ã
ç»é¢ãµã€ãºã決å®ããå¿
èŠããã
ãŸã ã ããã¯ã«ã¡ã©ã®èŠéè§ã«äŸåããŸããèŠéè§ã¯åºŠåäœã§æž¬å®ããããããªã«ã¡ã©ã®ããºãŒã ããšåŒã°ãããã®ã«å¯Ÿå¿ããŸãã ãŠãŒã¶ãŒã¯å€æ°ã䜿çšããŠèšå®ããŸã
fov ïŒèŠéïŒã ç»é¢ã¯æ£æ¹åœ¢ã§ã¯ãªããããåçŽèŠéè§ã®æå³ãæç¢ºã«ããå¿
èŠããããŸãã
ãã®ãããç»é¢ã®é«ããæ±ºå®ããã«ã¯ãé ç¹è§ãæã€äºç蟺äžè§åœ¢ã®åºèŸºãèŠã€ããå¿
èŠããããŸã
fov é«ã1ïŒäžè§æ³ãèŠããŠãç§ãã¡ã¯åŸã
2 tan\å·ŠïŒfov/2\å³ïŒ ã ããã«åºã¥ããŠã
ç»é¢äžã®1ãã¯ã»ã«ã®ãµã€ãºã決å®ã§ã
ãŸã ã
pixelSize= frac2 tan leftïŒfov/2 rightïŒrows
次ã«ãå転è¡åããã¯ãã«ã«é©çšããŸã
ïŒ0ã0ã1ïŒ ãããŠ
ïŒ0ã1ã0ïŒ ãã¯ãã«ãååŸããŸã
\äžç·u ãããŠ
\äžç·v ç»é¢ã®æ°Žå¹³æ¹åãšåçŽæ¹åãå®çŸ©ã
ãŸã ïŒèšç®ãç°¡çŽ åããããã«ããããã¯äºåã«ä¹ç®ãããŸã
pixelSize ïŒïŒ
beginpmatrixuxuyuz endpmatrix=pixelSize cdotMïŒ alphaã betaïŒ beginpmatrix001 endpmatrix=pixelSize beginpmatrix sinïŒ alphaïŒ0 cosïŒ alphaïŒ endpmatrix
beginpmatrixvxvyvz endpmatrix=pixelSize cdotMïŒ alphaã betaïŒ beginpmatrix010 endpmatrix=pixelSize beginpmatrix cosïŒ alphaïŒ cdot sinïŒ betaïŒ cosïŒ betaïŒ sinïŒ alphaïŒ cdot cosïŒ betaïŒ endpmatrix
ãããã£ãŠãã«ã¡ã©ãåºãŠã座æšãæã€ãã¯ã»ã«ã«å¯Ÿå¿ããããŒã ã®æ¹åãèŠã€ããããã®ãã¹ãŠã®ã³ã³ããŒãã³ãããããŸã
sãtraydirïŒsãtïŒ= beginpmatrixx0y0z0 endpmatrix+s beginpmatrixuxuyuz endpmatrix+t beginpmatrixvxvyvz endpmatrix
ããã¯ã»ãšãã©å¿
èŠãªãã®ã§ãã å
ç·ã®éå§ç¹ãã«ã¡ã©ã®ãã€ã³ãã«ãããæ¹åãã¯ãã«ãæ£èŠåããå¿
èŠãããããšã®ã¿ãèæ
®ããå¿
èŠããããŸãã
rayïŒsãtãdïŒ= beginpmatrixcamXcamYcamZ endpmatrix+d cdot fracraydirïŒsãtïŒ lVertraydirïŒsãtïŒ rVert
ç®çã®æ©èœãåŸãããŸãã
rayïŒsãtãdïŒ ããè·é¢ã§ããŒã ã®ãã€ã³ããè¿ã
d 座æšãæã€ãã¯ã»ã«ã«å¯Ÿå¿ããæåãã
sãt ã
ãšã¯ã»ã«
çµæã®Excelãã¡ã€ã«ã¯ã6æä»¥äžã§æ§æãããæ¬ã§ãã
- Rã®æåã®ã·ãŒãã«ã¯ããšã³ããŠãŒã¶ãŒãå¿
èŠãšãããã¹ãŠã®ãã®ãå«ãŸããŸãããã©ã¡ãŒã¿ãŒãæã€ã»ã« rowsãcolsãfovãalphaãbetaãdist ãããã³çµæã®ã»ã«ãçœé»ã®ã¹ã±ãŒã«ã§ãã€ã³ãããŸãã
- ã·ãŒãNã¯å€ãäºæž¬ããŸã frac1 lVertraydirïŒsãtïŒ rVert ã
- ã·ãŒãX ã Y ã Zã¯åº§æšãèšç®ããŸã XãYãZ ãã¯ãã« raydirïŒsãtïŒ ãã㊠fracraydirïŒsãtïŒ lVertraydirïŒsãtïŒ rVert ã
- ã·ãŒãi1 ã i2 ã...ã«ã¯ãåãã¯ã»ã«ã®ã¬ã€ããŒãã³ã°ã¢ã«ãŽãªãºã ã®å埩ãå«ãŸããŠããŸãã
ãã¹ãŠã®ã·ãŒãã¯åãæ¹æ³ã§äœæãããŸãã

ã·ãŒãR |
I1 | è¡ïŒ | 50 |
V1 | colsïŒ | 77 |
AI1 | fovïŒ | 39 |
AV1 | distïŒ | 1,4 |
BI1 | ã¢ã«ãã¡ïŒ | 35 |
Bv1 | ããŒã¿ïŒ | 20 |
** | =(i14! XN - i13! XN < 0,00000000000001; 0,09; (0; (1; (i15! XN - i14! XN ) / (i14! XN - i13! XN )))) |
ã·ãŒãN |
I1 | pixelSizeïŒ | =TAN(R!AI1 / 2) / (R!I1 / 2) |
** | =1 / ((X!A N + X! X 2; 2) + (Y!A N ; 2) + (Z!A N + Z! X 2; 2)) |
ã·ãŒãX |
I1 | camXïŒ | =R!AV1 * COS(R!BV1) * COS(R!BI1) |
V1 | uxïŒ | =-N!I1 * SIN(R!BI1) |
AI1 | vxïŒ | =N!I1 * SIN(R!BV1) * COS(R!BI1) |
AV1 | x0ïŒ | =-COS(R!BV1) * COS(R!BI1) |
A * | =AI1 * (() - 2 - (R!I1 + 1) / 2) |
* 2 | =AV1 + V1 * (() - 1 - (R!V1 + 1) / 2) |
** | =( Z 2 + A N ) * N! Z N |
ã·ãŒãy |
I1 | ãã£ãïŒ | =R!AV1 * SIN(R!BV1) |
V1 | vyïŒ | =-N!I1 * COS(R!BV1) |
AI1 | y0ïŒ | =-SIN(R!BV1) |
A * | =AI1 + V1 * (() - 2 - (R!I1 + 1) / 2) |
** | =A N * N! Z N |
ã·ãŒãz |
I1 | camZïŒ | =R!AV1 * COS(R!BV1)) * SIN(R!BI1) |
V1 | uzïŒ | = N!I1 * COS(R!BI1) |
AI1 | vzïŒ | = N!I1 * SIN(R!BV1) * SIN(R!BI1) |
AV1 | z0ïŒ | =-COS(R!BV1) * SIN(R!BI1) |
A * | =AI1 * (() - 2 - (R!I1 + 1) / 2) |
* 2 | =AV1 + V1 * (() - 1 - (R!V1 + 1) / 2) |
** | =( Z 2 + A N ) * N! Z N |
ã·ãŒãi1 |
I1 | dist0ïŒ | = formula( X!I1, Y!I1, Z!I1 ) |
** | =I1 + formula( X!I1 + X! XN * I1, Y!I1 + Y! XN * I1, Z!I1 + Z! XN * I1 ) |
ã·ãŒãi2 ã i3 ã... |
** | =i (n-1) ! XN + formula( X!I1 + X! XN * i (n-1) ! XN , Y!I1 + Y! XN * i (n-1) ! XN , Z!I1 + Z! XN * i (n-1) ! XN ) |
泚ïŒ
- Excelã¯ã©ãžã¢ã³ã§èšç®ããããããã¹ãŠã®äžè§é¢æ°ã®åŒæ°ã«ä¹ç®ãããŸã frac pi180 ïŒExcelã«ã¯ããã®ããã®
RADIANS
颿°ããããŸãïŒã æ°åŒãæ··åããªãããã«ãäžèšã®è¡šãããããã®ä¹ç®ãåé€ããŸããã formula
ãèšè¿°ãããŠããå Žåãæ¬¡ã®åŒã®ãããããæ¿å
¥ããå¿
èŠããããŸãã
ãšã¯ã»ã«ããŒã©ã¹ãã¥ãŒããã©ãŒãã¥ã© MINïŒ
MAXïŒ
ABSïŒxïŒ-0.3ãABSïŒyïŒ-0.3ãABSïŒzïŒ-0.3ã
-SQRTïŒPOWERïŒxã2ïŒ+ POWERïŒyã2ïŒ+ POWERïŒzã2ïŒïŒ+ 0.375
ïŒã
SQRTïŒPOWERïŒSQRTïŒPOWERïŒx-0.25ã2ïŒ+ POWERïŒz-0.25ã2ïŒïŒ-0.25ã2ïŒ+ POWERïŒyã2ïŒïŒ-0.05
ïŒ
Excelã®ã±ãã«åŒ MINïŒ
SQRTïŒPOWERïŒSQRTïŒPOWERïŒxã2ïŒ+ POWERïŒzã2ïŒïŒ-0.3ã2ïŒ+ POWERïŒy-0.18ã2ïŒïŒ-0.02ã
SQRTïŒPOWERïŒxã2ïŒ+ POWERïŒyã2ïŒ* 2.5 + POWERïŒzã2ïŒïŒ-0.4ã
MAXïŒ
x + y-0.15-0.05-0.5ã
-ïŒyïŒ+ 0.19-0.1ã
SQRTïŒPOWERïŒSQRTïŒPOWERïŒx-0.55ã2ïŒ+ POWERïŒy-0.09ã2ïŒïŒ-0.1ã2ïŒ+ POWERïŒz-0.1ã2ïŒïŒ-0.04
ïŒã
MAXïŒ
-ïŒ-ïŒyïŒ+ 0.19-0.1ïŒã
SQRTïŒPOWERïŒSQRTïŒPOWERïŒx-0.35ã2ïŒ+ POWERïŒy-0.09ã2ïŒïŒ-0.1ã2ïŒ+ POWERïŒz-0.1ã2ïŒïŒ-0.04
ïŒã
SQRTïŒPOWERïŒxã2ïŒ+ POWERïŒy-0.27ã2ïŒ+ POWERïŒzã2ïŒïŒ-0.05
ïŒ
ãã®èšäºã¯ãèšäºãMS Excelã®æ°åŒã§æžããã3Dãšã³ãžã³ããšã©ã®ããã«é¢é£ããŠããŸãããã®ãšã³ãžã³ã¯ãè¿·è·¯ãšæ¥åäœã®ã¬ã³ããªã³ã°ã«ã®ã¿é©ããŠããŸãã äžæ¬¡å
ã®ã¬ã€ãã£ã¹ã¿ãŒã䜿çšãããããããäžäžã®ã¹ãã©ã€ããæãããå£ã®é¯èŠãäœãåºããŸãã ãããããã®åŸãæ¬æ Œçãªã²ãŒã ããžãã¯ãå®è£
ãããŸããããã§ã¯ãç®æšã¯3次å
ãšã³ãžã³ã®ã¿ã§ãã