首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量操作:向量1点( vec2)对vec1 * vec2对点(vec1,vec2)

向量操作:向量1点( vec2)对vec1 * vec2对点(vec1,vec2)
EN

Software Engineering用户
提问于 2011-04-13 13:22:55
回答 6查看 663关注 0票数 -2

您最喜欢的实现/使用向量操作的方法是什么?

  • 向量1.点(Vec2)
    • 允许重用vec1,但是很难理解更长的方程。

  • 点(vec1,vec2)
    • 我的一个朋友喜欢这个,因为“点”不是向量的属性

  • vec1 * vec2
    • 可能看起来最好,但并非所有语言(例如Java)都能做到。
EN

回答 6

Software Engineering用户

发布于 2011-04-13 14:01:55

重载运算符可以是好的,但前提是重新定义的运算符的行为与原始运算符相似。由于矢量有两个常见的乘积(点和十字),这可能会引起问题。(我认为operator*()代表圆点,operator%代表交叉,但在实践中我从未见过这种情况。)

点积与两个向量的关系是相等的,所以我不想使用第一个版本。它看起来太像vec2应用于vec1了。

因此,我宁愿使用dot(vec1, vec2)。它看起来像它是对称的,它并没有使向量类接口变得更大。你把越多的东西装进一个类(咳嗽,std:string咳嗽),它是越复杂,更有可能出问题的地方。

票数 4
EN

Software Engineering用户

发布于 2011-04-13 13:38:02

虽然这不是一个很好的主观问题的基础,但我要避开第三个例子

代码语言:javascript
复制
vec1 * vec2

因为乘法和点函数不同。这很容易造成混淆,因为(主观的,直观的)可能超载'*‘字符。

票数 2
EN

Software Engineering用户

发布于 2011-04-13 13:52:02

假设是C++,我将选择您的第二个选项。

最后一个选项是我最不喜欢的,但它增加了困惑:*是什么意思?点积还是交叉积?特别是如果你做了vec * scalar标量乘法(我个人也会避免),那么它就会变得更加混乱。

所以这只是在第一个和第二个选项之间。如果你读赫伯·萨特的文章“单石“解开””,他会详细介绍为什么非会员的非朋友函数比成员函数具有更好的界面,所以我不会重复他说的每一句话,只是说我同意其中的大部分内容。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/67757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档