[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 メーリングリストの案内