C++에서 Vector2 클래스가 있습니까? 그렇다면이 클래스를 사용하려면 무엇을 포함해야합니까?C++의 Vector2 클래스
입자의 위치 나 속도와 같은 2 차원 벡터를 저장하는 데 사용하고 싶습니다.
C++에서 Vector2 클래스가 있습니까? 그렇다면이 클래스를 사용하려면 무엇을 포함해야합니까?C++의 Vector2 클래스
입자의 위치 나 속도와 같은 2 차원 벡터를 저장하는 데 사용하고 싶습니다.
여기 있습니다.
struct Vector2
{
float x;
float y;
};
또는 std::pair<float, float>
을 사용할 수 있습니다.
그런 다음 구조체 배열 (SOA) 대 구조체 배열 (AOS) 및 코드 성능에 미치는 영향에 대해 자세히 배우고 자 할 것입니다.
입자 시스템은 일반적으로 SOA가됩니다.
마지막으로 여기에 series of blog posts on AOS & SOA applied to the implementation of a particle system입니다.
EDIT : Eigen 또는 glm과 같은 유용한 수학 라이브러리가 있습니다.이 라이브러리는 많은 유용한 알고리즘과 함께 이러한 유형을 정의합니다 (성능 구현 포함).
또는'struct Point2 {...}; typedef std :: vector
'std :: pair <>'를 사용하는 것은 좋은 생각이 아닙니다. 'Vector2'는'std :: pair <>'보다 훨씬 더 많은 것을 말합니다. – wilhelmtell
<utility>
에 std::pair
이 있습니다. 그러나 벡터 산술 연산을 지원하지 않습니다.
왜 벡터 벡터를 만드시겠습니까?
std::vector<std::vector<YourType> > yourvector;
또는 쌍의 벡터 ,
std::vector<std::pair<float, float> > yourvector;
그렇게 깔끔하지는 않지만, 당신의 벡터 [1]에는 벡터가있을 수 있지만 아무것도 포함하지 않을 수도 있습니다. 쌍은 항상 2 개의 값입니다. – RvdK
그래, 난 처음으로 대답하기 전에 충분하다고 생각하지 않았다. : –
로 2 차원 벡터 :이
std::vector< std::vector<type> > vec2d;
유형 등 INT, 더블, 클래스, 같은
표준 라이브러리에는 "vector2"클래스가 없습니다. 필요에 맞는 한 쌍의 클래스가 있지만,이 시나리오에서는 고유 한 벡터 클래스를 만드는 것이 가장 좋습니다 (첫 번째 및 두 번째가 아닌 x 및 y라는 변수가 있으므로).
class Vector2
{
public:
double x;
double y;
Vector2(double x, double y);
... etc
}
그런 다음 표준 : : 벡터 클래스는 당신이 필요 아닙니다
등/크로스 점의 제품을 찾는 기능을 추가, 연산자 +를 오버로드 할 수 있습니다. std :: vector 클래스는 C 배열로 대체 된 배열입니다.
아니, 표현 템플릿을 사용하여 구현하지 않는 한'operator +'등을 오버로드하지 마라. 코드는 생성에 의해 속도가 느려질 것이다. 많은 임시 직원들 –
@ 그레고리 : 성능이 임시 직원들에게 얼마나 고통 스러울 지 모르겠습니다.OTOH, (현명한) 오버로드 된 연산자가없는 벡터 산술은 지옥처럼 보입니다. – UncleBens
언제부터 2 차원 컬렉션을 배치합니까? –
비행기에서 일하고 있다면. 질문에 의해 분명히 암시. – Dan