:draw-arrow してから :draw-on するようなコードを書くと,挙動がおかしくなります.
irtviewer では右端で拡大縮小ができると思いますが,
:draw-arrow で表示した矢印が見える範囲では :draw-on で表示させようとしたものが正しく表示されなくなり,
:draw-arrow で表示した矢印が見えなくなるまで縮小すると :draw-on で表示させようとしたものが正しく表示されます.
正しく表示されないというのは,巨大化したり,見えなくなったりするということです.
以下がサンプルコードで,1つ目の do-until-key は上記の症状が起こるサンプルで, 2つ目の do-until-key は正しく動くサンプルです.
よろしくお願いします.
(setq *b* (make-cube 100 100 100))
(send *b* :orient (deg2rad 45) :z)
(objects (list *b*))
;; draw-arrowの後では、draw-onなどの挙動がおかしい
(do-until-key
(send *irtviewer* :draw-objects :flush nil)
(send *irtviewer* :viewer :draw-arrow
(send *b* :worldpos)
(v+ #f(100 100 100) (send *b* :worldpos)))
(send (send *b* :worldcoords) :draw-on :flush nil :color #f(0 1 0) :size 100 :color #f(1 0 0))
(send *irtviewer* :viewer :viewsurface :flush)
(x::window-main-one)
)
;; draw-arrowを最後によんでflushすると、問題なさそう
(do-until-key
(send *irtviewer* :draw-objects :flush nil)
(send (send *b* :worldcoords) :draw-on :flush nil :color #f(0 1 0) :size 100 :color #f(1 0 0))
(send *irtviewer* :viewer :draw-arrow
(send *b* :worldpos)
(v+ #f(100 100 100) (send *b* :worldpos)))
(send *irtviewer* :viewer :viewsurface :flush)
(x::window-main-one)
)
また, do-until-key を回している最中に, IRT viewer のウィンドウサイズを変えても :draw-arrow で描いた矢印の始点・終点が更新されません.