したがって、ライン上で動作するさまざまな関数が必要になる場合があります。
inline float yIntercept(const vec2& ptA, const vec2& ptB, float x);
inline float xIntercept(const vec2& ptA, const vec2& ptB, float y);
inline bool lineIntersection(const vec2& ptA0, const vec2& ptB0, const vec2& ptA1, const vec2& ptB1);
関数は、線を表す線ごとに 2 点を取ります。
または、これら 2 つのポイントとさまざまな便利な線関連メソッドを持つ線クラスを作成できます。
struct Line {
... stuff
inline float xIntercept(float y);
inline float yIntercept(float x);
inline bool lineIntersection(const Line& other);
vec2 m_point[2];
};
私が考えていたことの 1 つは、2 つのポイントが与えられたときにこれらの関数のいずれかを呼び出す必要があるたびに、この線クラスのインスタンスを作成するパフォーマンスです。
ポリゴンを表すポイント リストを操作していて、実際には線オブジェクトがインスタンス化されていない可能性があります。
いつでも私はどちらかを呼び出すことができます
yIntercept(somePointA, somePointB, 3.0f);
または
Line(somePointA, somePointB).yIntercept(3.0f); //I think this would compile
私は、C スタイルの関数ではなく、これらの種類のクラスを持つという考えが好きですが、ポイントを関数に直接渡すのではなく、このようなクラスのインスタンスを作成することでパフォーマンスが低下するのではないかと考えていました。たぶん、コンパイラはいくつかの最適化を行いますか?