本文整理汇总了C++中Vector4::GetVector3方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector4::GetVector3方法的具体用法?C++ Vector4::GetVector3怎么用?C++ Vector4::GetVector3使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Vector4
的用法示例。
在下文中一共展示了Vector4::GetVector3方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ModelViewTransform
// rend_primitive 相机空间
void Renderer::ModelViewTransform(const Matrix44 &model_view)
{
Matrix33 normal_trans = model_view.GetMatrix33();
normal_trans.SetInverse();
normal_trans.SetTranspose();
// 转换灯光位置
if (light_)
{
Vector4 pl;
pl.SetVector3(light_->position);
pl.w = 1.0f;
pl = pl * model_view;
light_pos_ = pl.GetVector3();
}
#if 0
for (int i = 0; i < rend_primitive_.size; ++i)
{
if (((i + 1) % 3) == 0)
{
Vector3 p0 = rend_primitive_.vertexs[i - 2].position.GetVector3();
Vector3 p1 = rend_primitive_.vertexs[i - 1].position.GetVector3();
Vector3 p2 = rend_primitive_.vertexs[i].position.GetVector3();
Vector3 e0 = p0 - p1;
Vector3 e1 = p1 - p2;
Vector3 n = rend_primitive_.vertexs[i-1].normal;
float dot = DotProduct(e0, n);
// Logger::GtLogInfo("before:0\t%f", dot);
assert(equalf(dot, 0, 0.001));
dot = DotProduct(e1, n);
// Logger::GtLogInfo("before:1\t%f", dot);
assert(equalf(dot, 0, 0.001));
}
}
#endif
for (int i = 0; i < rend_primitive_.size; ++i)
{
Vector4 &position = rend_primitive_.vertexs[i].position;
position = position * model_view;
Vector3 &normal = rend_primitive_.vertexs[i].normal;
normal = normal * normal_trans;
normal.SetNormalize();
}
#if 0
for (int i = 0; i < rend_primitive_.size; ++i)
{
if (((i + 1) % 3) == 0)
{
Vector4 p0 = rend_primitive_.vertexs[i - 2].position;
Vector4 p1 = rend_primitive_.vertexs[i - 1].position;
Vector4 p2 = rend_primitive_.vertexs[i].position;
Vector3 e0 = (p0 - p1).GetVector3();
Vector3 e1 = (p1 - p2).GetVector3();
Vector3 N = CrossProduct(e0, e1);
N.SetNormalize();
float dot = DotProduct(N, e0);
Logger::GtLogInfo("dot e0 \t%f", dot);
dot = DotProduct(N, e1);
Logger::GtLogInfo("dot e1 \t%f", dot);
Vector3 n0 = rend_primitive_.vertexs[i - 2].normal;
Vector3 n1 = rend_primitive_.vertexs[i - 1].normal;
Vector3 n2 = rend_primitive_.vertexs[i].normal;
Vector3 zero = CrossProduct(N, n1);
zero.Display();
dot = DotProduct(e0, n0);
Logger::GtLogInfo("after:0\t%f", dot);
dot = DotProduct(e1, n0);
Logger::GtLogInfo("after:1\t%f", dot);
}
}
#endif
}