当前位置: 首页>>代码示例>>C++>>正文


C++ Vector4::GetX方法代码示例

本文整理汇总了C++中Vector4::GetX方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector4::GetX方法的具体用法?C++ Vector4::GetX怎么用?C++ Vector4::GetX使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Vector4的用法示例。


在下文中一共展示了Vector4::GetX方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: sizeof

CMatrix4::CMatrix4(const Vector4& v1, const Vector4& v2, const Vector4& v3, const Vector4& v4)
#if 0
    : m{ v1.GetX(), v1.GetY(), v1.GetZ(), v1.GetW(),
         v2.GetX(), v2.GetY(), v2.GetZ(), v2.GetW(),
         v3.GetX(), v3.GetY(), v3.GetZ(), v3.GetW(),
         v4.GetX(), v4.GetY(), v4.GetZ(), v4.GetW() }
{
#else
{
    constexpr std::size_t bytes = sizeof(float) * 4;
    std::memcpy(static_cast<void*>(&m[0]), static_cast<const float*>(v1), bytes);
    std::memcpy(static_cast<void*>(&m[4]), static_cast<const float*>(v2), bytes);
    std::memcpy(static_cast<void*>(&m[8]), static_cast<const float*>(v3), bytes);
    std::memcpy(static_cast<void*>(&m[12]), static_cast<const float*>(v4), bytes);
#endif
}

CMatrix4::CMatrix4(const Array& m)
    : m(m)
{
}

void CMatrix4::SetRow(std::int32_t row, const Vector4& v)
{
    HASENPFOTE_ASSERT_MSG((row >= 0) && (row < order), "Row index out of bounds.");
    m[offset<order>(row, 0)] = v.GetX();
    m[offset<order>(row, 1)] = v.GetY();
    m[offset<order>(row, 2)] = v.GetZ();
    m[offset<order>(row, 3)] = v.GetW();
}
开发者ID:Hasenpfote,项目名称:hasenpfote,代码行数:30,代码来源:cmatrix4.cpp

示例2: CalculateSpotLight

// `計算點光源, 它和頂點位置, 頂點面向, 光源位置, 光源方向, 光柱交角有關.`
void CalculateSpotLight(Vertex_VCN *pVertices, int num_vertices)
{
	float fSpotLightCutoffCos = FastMath::Cos( FastMath::DegreeToRadian(g_fSpotLightCutoff) );

	for ( int i=0; i<num_vertices; i++ )
	{
		// `求出轉換後在世界座標系的頂點位置`
		Vector4 vPosition = pVertices[i].m_Position * g_world_matrix;
		// `求出轉換後在世界座標系的頂點面向, RotateVector函式只做旋轉, 忽略位移.`
		Vector4 vNormal = g_world_matrix.RotateVector(pVertices[i].m_Normal);
		// `計算出頂點位置到光源的方向跟長度`
		Vector4 vVertex_to_Light = g_vLightPosition - vPosition; 
		float light_distance = vVertex_to_Light.NormalizeAndGetLength();
		// `頂點面向跟光線方向的交角, 可以決定反射光的強度.`
		Vector4 vCosine = Vector3Dot(g_vLightDirection, vVertex_to_Light);
		// `把vCosine局限在永遠大於0的范圍`
		vCosine.Clamp_to_0();
		float fCosine = vCosine.GetX();
		if ( fCosine >= fSpotLightCutoffCos )
		{
			// `頂點跟光線的交角小於fSpotightCutoffCos時, 才落在光柱范圍內.`
			Vector4 vDistance(1.0f, light_distance, light_distance * light_distance);
			// `g_vLightAttenuation里記錄了計算衰減公式1/(a + b*d + c*d^2)里的(a,b,c)`
			// `Vector3Dot(vDistance, g_vLightAttenuation) = (a,b,c) dot (1,d,d^2) = (a + b*d + c*d^2)`
			Vector4 vAttenuation = Vector3Dot(vDistance, g_vLightAttenuation);
			// `比較靠近光柱外圍部分的頂點, 光線會衰減.`
			float fFalloff = pow(fCosine, g_fSpotLightExponent);
			Vector4 vIntensity = Vector3Dot(vNormal, vVertex_to_Light);
			pVertices[i].m_Color += fFalloff * vIntensity * g_vLightColor / vAttenuation;
			pVertices[i].m_Color.Clamp_to_1();
		}
	}
}
开发者ID:as2120,项目名称:ZNginx,代码行数:34,代码来源:render_data.cpp

示例3: Render

void ShapeRectangle::Render() const
{
	Vector4 bottomLeft = m_transformComponent->Transformation(m_bottomLeft);
	Vector4 bottomRight = m_transformComponent->Transformation(m_bottomRight);
	Vector4 topLeft = m_transformComponent->Transformation(m_topLeft);
	Vector4 topRight = m_transformComponent->Transformation(m_topRight);

	glBegin(GL_TRIANGLE_STRIP);
	glColor3ub(m_red, m_green, m_blue);

	glVertex2f(bottomLeft.GetX(), bottomLeft.GetY());
	glVertex2f(bottomRight.GetX(), bottomRight.GetY());
	glVertex2f(topLeft.GetX(), topLeft.GetY());
	glVertex2f(topRight.GetX(), topRight.GetY());

	glEnd();
}
开发者ID:kimcavalcanti,项目名称:Spaceships-2D,代码行数:17,代码来源:ShapeRectangle.cpp

示例4:

void CMatrix4::SetColumn(std::int32_t column, const Vector4& v)
{
    HASENPFOTE_ASSERT_MSG((column >= 0) && (column < order), "Column index out of bounds.");
    m[offset<order>(0, column)] = v.GetX();
    m[offset<order>(1, column)] = v.GetY();
    m[offset<order>(2, column)] = v.GetZ();
    m[offset<order>(3, column)] = v.GetW();
}
开发者ID:Hasenpfote,项目名称:hasenpfote,代码行数:8,代码来源:cmatrix4.cpp

示例5: SetVector

void CgEffect::SetVector(const char* name, Vector4& v)
{
    cgSetParameter4f(this->retrieveParameter(name), v.GetX(), v.GetY(), v.GetZ(), v.GetW());
}
开发者ID:G33KatWork,项目名称:GeexEngine,代码行数:4,代码来源:CgEffect.cpp


注:本文中的Vector4::GetX方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。