我正在尝试一些基本的光线追踪,我有一个2D渐变(称为dybydx).我从正方形的中心追踪0.5,0.5,并且想要设置与梯度垂直的附加迹线以增加观察视野(〜<0.5).我是fp算术的新手,这在我调试时引起了一些头痛.
我希望以下代码解释其余的:
if (incX) {
if (incY) {
if (cclockwise) {
x -= System::Math::Sin(theta) / 2;
y += System::Math::Cos(theta) / 2;
} else {
x += System::Math::Sin(theta) / 2;
y -= System::Math::Cos(theta) / 2;
}
} else {
if (cclockwise) {
x += System::Math::Cos(theta) / 2;
y += System::Math::Sin(theta) / 2;
} else {
x -= System::Math::Cos(theta) / 2;
y -= System::Math::Sin(theta) / 2;
}
}
} else {
if (incY) {
if (cclockwise) {
x -= System::Math::Cos(theta) / 2;
y -= System::Math::Sin(theta) / 2;
} else {
x += System::Math::Cos(theta) / 2;
y += System::Math::Sin(theta) / 2;
}
} else {
if (cclockwise) {
x += System::Math::Sin(theta) / 2;
y -= System::Math::Cos(theta) / 2;
} else {
x -= System::Math::Sin(theta) / 2;
y += System::Math::Cos(theta) / 2;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在纸上围绕象限,但是我忘了Windows颠倒传统的y轴(因此我认为顺时针方向不是,但这是一个任意错误而且不重要).我真正想要的是,无论哪种方式将我的渐变旋转90度都是一种万无一失的方法.谢谢.
edit-- theta是渐变形成的水平到+ ve y轴的角度(在纸上).
edit-- incX和incY意味着原始渐变(真的,真的)分别在X和Y中增加.
如果你在@dario_ramos方程中取代90度,你得到:
x' = -y
y' = x
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你在一张托运纸上画这个,你就会明白为什么它如此微不足道.
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |