[SML 7298] はじめまして & Jun に関して質問

AOKI Atsushi aoki @ sra.co.jp
2007年 4月 19日 (木) 06:05:52 JST


AOKI Atsushi wrote:
 > 以下に、佐藤さんからの不具合報告を鑑みて、私が考えたコードを
 > 示します。回転系を用いていますので、有効桁数が16桁程度に落
 > ちてしまいますが、あながち使えないこともないでしょう。

面に対する表裏判定の際に、判定面を直線の始点まで平行移動する
ことを忘れていました。そして、冗長なところを削減してみました。

| thePoint theLine p1 p2 line angle p plane p3 |
thePoint := 0 , 1 , 1.
theLine := 0 , 0 , 0 to: -1 , 0 , 0.
p1 := thePoint.
p2 := theLine nearestPointFromPoint: p1.
line := p1 to: p2.
angle := 90 asDegrees.
(theLine first distance: p2) > (theLine last distance: p2)
     ifTrue: [p := theLine first]
     ifFalse: [p := theLine last].
plane := JunPlane
             on: p1
             on: p2
             on: p.
plane := plane transform: (angle transformationToRotate: line).
((plane translatedBy: theLine first - p2) whichSide: theLine last) > 0
     ifFalse:
         [plane := JunPlane
                     on: p2
                     on: p1
                     on: p.
         plane := plane transform: (angle transformationToRotate: line)].
p3 := plane p3.
plane asJunOpenGL3dObjectWithPoints showWithUnitAxes.
^p3

------------------------------------------------------------
R2D2 (AOKI Atsushi)        http://www.sra.co.jp/people/aoki/




SML メーリングリストの案内