私はこの(明らかに単純な)問題に苦労してきました:
- いくつかの座標を持つポイント(実際には、2Dジオメトリで頂点をキャッチして移動できるマウスポイント)があります。たとえば、平面z = 0上のxとyです。
- 2D 平面を特定の Z に移動することで、ジオメトリをズーム/ズーム解除できるようにしたいと考えています。
- ジオメトリ ポイントをマウス (ポイント (x, y)) でドラッグできるようにするには、平面が z = -2 であっても、プログラムは z = 0 で頂点座標を受け取る必要があります。例えば。
私は投影について多くを検索し、これらに従おうとしました:
- http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html
- http://paulbourke.net/miscellaneous/lens/
でも欲しいものはなかなか手に入らない…
これが私のコード(Obj-C)ですが、言語に依存しません:
double width = context.bounds.size.width;
double height = context.bounds.size.height;
double alpha = 2. * atan((height / 2.) / fabs(self.inputZ));
projectedX = self.inputX / (self.inputZ * tan(alpha / 2.));
projectedY = self.inputY / (self.inputZ * tan(alpha / 2.));
この単純な問題に関するアドバイスをいただければ幸いです。ありがとうございました。