基于光方向缩放右矢量

时间:2014-04-17 06:42:16

标签: c# math vector 3d unity3d

我有一个我构建的四边形,我想根据光线的数量来缩放四边形,问题是点积给了我负值,我不能用来缩放另一边的矢量四边形。我有一个由6个顶点组成的网格,两个四边形。两个四边形中的一个应该根据点积值的多少来扩展或缩小,如何根据点积值缩放一个四边形并缩小另一边?

 float lightAngleRightVector = Vector3.Dot(lightDir.normalized, Source.transform.right.normalized);

        lightAngleRightVector = Mathf.Clamp(lightAngleRightVector, 0.2f, 0.5f);
        Global.Log("Light Angle Right Vecotr" + lightAngleRightVector);
        // light projected left side, limit values);
        if (lightAngleRightVector < 0.3f)
        {
            vxAbLeft = lightAngleRightVector;
            vxCdRight = lightAngleRightVector - 0.1f;
        }

        // light projected right side
        else if (lightAngleRightVector > 0.3f)
        {

            vxCdRight = lightAngleRightVector;
            vxAbLeft = lightAngleRightVector - 0.1f;
        }



        Global.Log("VxCDRIGHT =   " + vxCdRight);
        Global.Log("vxAbLeft =   " + vxAbLeft);

        // add little bit shift up for fixing z-fighting
        Vector3 vxPos1Top = (frontPt + new Vector3(0, mShadowOffestY, 0)) - (mRightFrontPt * vxAbLeft) * scale; // 1,2 vertices or on its left

        Vector3 vxPos2Top = (mRightBackPt * vxAbLeft) * scale;

        Vector3 vxPos3Top = frontPt;

        Vector3 vxPos4Top = backPt;

        Vector3 vxPos5Top =(mRightFrontPt * vxCdRight) * scale; // 5,6 vertices are on the right of the car

        Vector3 vxPos6Top =(mRightBackPt * vxCdRight * scale);

1 个答案:

答案 0 :(得分:0)

也许比例应该是abs(比例),所以它将是&gt; 0从未点亮的一面。这就是你想要的吗?