2012-01-25 3 views
2

엄격한 목적 - C에서 앱용 Vector Class를 만들기로 결정했습니다. 이것이 일어날 수 있다고 생각하는 방법은 먼저 각 점을 (x, y) 형식으로 잡고 Point2D 클래스를 만든 다음 2 점을 유지하는 Vector2D 클래스를 만드는 것입니다.objective-c에서 벡터 클래스 만들기

모든 것이 막히게 된 곳은 내 Vector2D 클래스입니다. 내 Vector2D 클래스의 인스턴스 변수에 2 개의 객체 (실제로 2 x Point2D 객체)를 저장하는 방법을 찾으려고합니다. NSMutableArray에 대해 생각했지만이 상황에서 많은 문제가 떠 올랐습니다. 플롯을 다루는 이래 가장 효율적인 솔루션이 무엇인지 모르겠습니다.

내가 원하는 것은 목표 - c를위한 Vector 클래스 또는 내 "퀘스트"의 팁/권장 사항에 대한 지침입니다. 당신은 어떻게 그런 일을하고 또한 여분의주의가 필요한지 선택하겠습니까?

+1

"2 점을 유지하는 Vector2D 클래스 만들기"그건 의미가 없습니다. 2D 벡터는 두 개의 2D 점을 포함하지 않습니다. 포인트와 마찬가지로 2 개의 값을 포함합니다. "점"은 위치를 참조하는 벡터입니다. 그들은 의미 론적 차이가 있지만 동일한 데이터를 포함 할 수 있습니다. –

+0

이론상 벡터가 (x, y) 시작점과 끝점 (x, y) (정확히 말하면 2d)을 가지고 있지 않습니까? 그렇지 않으면 어떻게 벡터에서 방향을 호출 할 수 있습니까? 내가 틀렸다면 나를 바로 잡으세요. 나는 순수한 (x, y) "벡터"클래스가 단지 모양 가장자리를 가지고 있다는 것을 볼 수 있었고, 왜 나는 또한 제안을 요청했는지 알 수있었습니다. 객관적인 벡터 클래스에 대한 귀하의 제안은 무엇입니까? 답장을 보내 주셔서 감사합니다 – Bisder

+3

그건 정렬 된 선분입니다. "벡터"라고하는 많은 것들이 있습니다. 위치 벡터, 그라디언트 벡터 등. 모두 서로 다른 것들을 포함합니다. 렌더링 및 그래픽 측면에서 벡터 유형은 용도에 따라 위치 또는 방향입니다. 당신은 일반적으로 이러한 종류의 것들에 대해 분리 된 유형을 원하지 않습니다. 별도의 행렬/위치 및 행렬/방향 승산 함수를 작성하지 않아도됩니다. 따라서 대부분의 벡터 수학 라이브러리는 단순히 벡터를 N 차원 배열로 생각하며 위치 또는 방향으로 해석 할 수 있습니다. –

답변

1

고정 된 크기의 배열 (귀하의 경우 2 개)은 귀하의 상황에서 완벽하게 수용되어야합니다. 벡터가 동적으로 커지지 않기 때문에이 코드는 올바르게 작동해야합니다.

@interface Vector2D : NSObject { 
    Point2D *points[2]; 
} 
// Properties and methods 
@end 
+0

사실, 벡터는 단지 2 개의 값을 가지지 만, 그 벡터는 대부분 모양이 만들어지기 때문에 다른 모양은 다른 벡터 수를 필요로한다. 도형에 대한 모든 Vector2D 객체를 보유하는 다른 객체를 계속 가져야한다고 생각합니까? - 그리고 이것은 정말 효율적입니까? 당신의 대답에 감사드립니다! 또한 내가 C 또는 C++ 구현에서 멀리 떨어져 객관적인 C에 충실하면 최선을 다하겠습니다. – Bisder

+0

또한이 형식으로이 형식을 사용할 수 없습니까? Xcode 팝업이 prolially 포인터의 배열이어야합니다. 그래서 나는 포인트 2D 포인트 [2]를 따르도록되어있다. 형식이 ..이게 더 복잡해? – Bisder

+0

@Bisder 당신의'Point2D'도 객관적인 C 객체라는 것을 깨닫지 못했습니다. 포인터를 표시하기 위해 답을 편집했습니다. 여러 형태의 'Vector2D' 인스턴스를 사용하는 한,'NSArray' /'NSMutableArray'를 사용하여 여러 개의 Vector2D를 보유 할 것입니다. NSArray' /'NSMutableArray'는 항상 정확히 두 개의 객체를 가지고있는 상황에서 낭비 적이지만, 컴파일 시점에 포인트의 수가 알려지지 않은 상황에서는 완벽합니다. – dasblinkenlight