回答
在這裏,你去。
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。
或'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
是的,在第一次回答之前我沒有足夠的想法 - 編輯它:) –
A 2維矢量:
std::vector< std::vector<type> > vec2d;
其中類型如int,雙,類等
有在標準庫中不是「vector2」類。 有一個適合你需求的pair類,但是對於這個場景,最好創建你自己的vector類(因爲這樣你就得到了名爲x和y的變量,而不是第一個和第二個),例如
class Vector2
{
public:
double x;
double y;
Vector2(double x, double y);
... etc
}
然後,您可以使用操作符重載+,增加功能尋找交叉/點積等
性病:: vector類是不是你所需要的。 std :: vector類幾乎只是C malloced數組的替代品。
不,不要重載'運算符+'等,除非你使用表達式模板來實現它們,否則你的代碼將會由於生成而減慢很多臨時工 –
@Gregory:我不明白這裏臨時工的表現如何。OTOH,沒有(明智的)重載操作符的矢量算術將看起來像地獄。 – UncleBens
- 1. C#Vector2代碼
- 2. AndEngine Vector2類
- 3. 什麼Vector2.Transform()和Vector2.TransformNormal()在XNA(C#)
- 4. Vector2在C++中等價嗎?
- 5. Vector2:類或結構?
- 6. XNA - 跨類訪問vector2
- 7. SFML中缺少sf :: Vector2類模板
- 8. 從另一個類中調用vector2
- 9. C#如何將點轉換爲vector2?
- 10. XNA,C# - 檢查一個Vector2路徑是否跨越另一個Vector2路徑
- 11. SFML Vector2用法
- 12. yz Vector3到Vector2
- 13. 添加到C#中的vector2?怎麼會這樣?
- 14. 比較int的和Vector2的
- 15. 添加Vector2列出
- 16. 設置Vector2在XNA
- 17. 如何更改Vector2?
- 18. 如何旋轉Vector2?
- 19. 旋轉精靈上的Vector2
- 20. XNA中的Vector2二維數組
- 21. 獲取Radius中的所有Vector2點
- 22. 矩形中包含的XNA Vector2路徑
- 23. class Vector2 final:shared_ptr <Vector2>是否正確(更新!)
- 24. 保留點(2)或Vector2(2)加入點(1)或Vector2(1)
- 25. 如何在另一個vector2上旋轉vector2?
- 26. Python TypeError:不支持的操作數類型爲*:'Vector2'和'int'
- 27. Vector2財產X或Y
- 28. 添加Vector2模糊圖像
- 29. Vector2已關閉 - libgdx/java
- 30. XNA Vector2旋轉問題
從何時開始定位二維集合? –
如果你在飛機上工作,它是。這個問題非常明顯。 – Dan