gpt4 book ai didi

c++ - 应该相同的 C++ 片段之间的区别

转载 作者:行者123 更新时间:2023-11-27 22:48:22 25 4
gpt4 key购买 nike

对于计算机图形学的家庭作业,我们必须编写一个函数,它确定点 p 是否位于边 p1p2 的左侧。现在我和我的搭档有这个函数的两个不同版本,尽管计算的是相同的东西,但它们会产生不同的结果。

片段 1:

// The direction of the line from p1 to p:
float lineX = p.x - p1.x;
float lineY = p.y - p1.y;
// The direction of the triangle's edge from p1 to p2:
float edgeX = p2.x - p1.x;
float edgeY = p2.y - p1.x;

// The z component of the cross product (line x edge):
float F = lineX * edgeY - lineY * edgeX;

片段 2:

float x = p.x;
float y = p.y;
float X = p1.x;
float Y = p1.y;
float dX = p2.x - p1.x;
float dY = p2.y - p1.y;

float F = ((x-X) * dY - (y-Y) * dX);

我知道浮点运算不是可交换的,也不是结合的。但是,根据我的理解,计算顺序应该完全相同,因为 lineX = x-XedgeX = dX
是否存在一些干扰计算的编译器优化?

最佳答案

复制粘贴错误:

float edgeX = p2.x - p1.x;
float edgeY = p2.y - p1.x;

(p1.x)?

关于c++ - 应该相同的 C++ 片段之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40705976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com