图形学变换中的Homogenize方法_艾孜尔江撰
生活随笔
收集整理的這篇文章主要介紹了
图形学变换中的Homogenize方法_艾孜尔江撰
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Vector4 Transform::Homogenize(Vector4& result, const Vector4& vec4ToBeHomogenized)
{
if (vec4ToBeHomogenized.getW() == 0.f) {
return Vector4();
}
float rhw = 1 / vec4ToBeHomogenized.getW();
result.setX((1.f + vec4ToBeHomogenized.getX() * rhw) * canvasWidth * 0.5f); // screen coordinate
result.setY((1.f - vec4ToBeHomogenized.getY() * rhw) * canvasHeight * 0.5f); //screen coordinate ---> top down
result.setZ(vec4ToBeHomogenized.getZ() * rhw);
result.setW(rhw);
return result;
}
它的逆變換如下(逆變換主要用于求陰影時候的反求過程):
Vector4 Transform::HomogenizeInvertion(Vector4 & result, const Vector4 & vec4ToBeInverted)
{
if (vec4ToBeInverted.getW() == 0.f) {
return Vector4();
}
float rhw = 1.f / vec4ToBeInverted.getW();
float reciprocalOfCanvasHeight = 1.f / canvasHeight;
float reciprocalOfCanvasWidth = 1.f / canvasWidth;
result.setX(((2 * vec4ToBeInverted.getX() * reciprocalOfCanvasWidth) - 1.f) * rhw);
result.setY((1.f - (2 * vec4ToBeInverted.getY() * reciprocalOfCanvasHeight)) * rhw);
result.setZ(vec4ToBeInverted.getZ() * rhw);
result.setW(rhw);
return result;
}
作者:艾孜爾江·艾爾斯蘭
總結
以上是生活随笔為你收集整理的图形学变换中的Homogenize方法_艾孜尔江撰的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作REDIES
- 下一篇: Angular应用的router-out