질문
이 지금 얼마 동안 나를 귀찮게 뭔가입니다,하지만 난 그것에 대한 확실한 답변을 찾을 수 없습니다 :표준화 2D/3D 벡터/좌표 클래스
- 는 알고 누구인가 표준 2D 및/또는 3D 벡터 (x, y 및 z 멤버가있는 구조체)를 STL에 소개하겠습니까?
- 그렇지 않은 경우 표준의 다음 버전에 이러한 클래스를 추가하는 현실적인 방법이 있습니까? 완전하고 완벽하게 작성된 제안서를 직접 작성하는 것이 아닌가요?
- 그리고 아직 완료되지 않은 이유는 무엇입니까?
나는 기꺼이 기여할 의향이 있지만 나는 받아 들일 수있을만큼 충분히 높은 품질의 것을 만드는 경험이 없다고 생각한다 (나는 전문 프로그래머가 아니다). 기본적으로 모든
의 자신의 버전을 구현하는 라이브러리와 프레임 워크 (그래픽, 물리학, 수학, 네비게이션, 센서 융합 ... 그것을 수) 지금 내가 본 수십추론/배경
struct Vector2d {
double x,y;
//...
};
/* ...
* operator overloads
*/
및/또는 3D 등가물 - 모든 경우는 물론, 적절한 시간에 재사용 가능한 버전을 만들기 전에 직접 구현 한 경우도 마찬가지입니다.
분명히 이것은 어려운 일이 아니며 차선책의 구현에 대해 걱정할 필요가 없지만 때마다 두 라이브러리를 결합하거나 다른 프로젝트의 코드를 재사용하고 싶습니다. 한 버전을 다른 버전으로 변환해야합니다. 전송 또는 가능한 경우 텍스트 교체).
위원회는 C++ 17 (특히 2D 그래픽 프레임 워크)의 표준 라이브러리를 크게 확장하려고 노력 했으므로 처음부터 모든 인터페이스에 공통 2D 벡터를 구워 넣고 싶습니다. 조금 과장 될 수
drawLine(transformCoordinates(trackedObject1.estimatePos(),params),
transformCoordinates(trackedObject2.estimatePos(),params));
오히려
MyOwnVec2D t1{trackedObject1.estimatePosX(), trackedObject1.estPosY()};
MyOwnVec2D t2{trackedObject2.estimatePosX(), trackedObject2.estPosY()};
t1 = transformCoordinates(t1,params);
t2 = transformCoordinates(t2,params);
drawLine(t1.x,t1.y,t2.x,t2.y);
예
보다,하지만 난 내 지점을 보여줍니다 생각 : 그냥 예를 들어 물품.나는 더하기와 곱하기와 같은 표준 연산을 허용하므로 이미 올바른 방향으로 가고 있습니다. 그러나 필요한 것은 모두 2 개 또는 3 개의 좌표가 있으면 너무 많은 가중치가 적용됩니다. 나는 고정 크기 및 동적 메모리 할당 (예 : std::array
기반)을 가진 valarray가 허용 가능한 솔루션이 될 것이라고 생각합니다. 특히 사소한 반복자 구현이 포함되어 있기 때문에 그렇다고 생각합니다. 그러나 개인적으로 x, y (및 z) 회원.
비고 :이 주제는 이미 논의되고있다 (그렇지 않은 경우 내가 놀랄 것)하면 미안하지만 때마다 나는 결과를 std::vector<std::vector<T>>
같은 얘기를 얻을 2D 벡터를 찾고 있어요 또는 특정 변환을 구현하는 방법은 있지만 표준화 주제는 없습니다.
* 표준의 다음 버전에 이러한 클래스를 추가하는 현실적인 방법이 있습니다. 완전하고 완벽하게 작성된 제안서를 작성하는 것이 부족합니다. * - 다른 사람에게 그렇게하도록 설득하는 것. 그것이 C++이 진화하는 방식입니다. –
@BartekBanachewicz :이 작업을 수행하는 방법에 대한 힌트 또는 제안서 작성에 대한 도움을 요청할 방법에 대한 힌트 (SW 회사에서 근무하지 않는 경우)? – MikeMB
기존 제안을 읽는 것으로 시작하겠습니다. –