在 C 中规范化来自结构体的向量

Jam*_*hko 2 c

typedef struct 
{
    float x, y, z;
} VECTOR;
Run Code Online (Sandbox Code Playgroud)

编写一个函数,该函数采用指向 VECTOR 结构的指针并对 x、y 和 z 分量进行标准化

我意识到你可以通过获取长度并将 x、y 和 z 除以长度来标准化向量。但我将如何使用此处提供的代码来做到这一点。这是我的尝试。

Void Norm(*VECTOR)
{
    x = x / *VECTOR.Length;
    y = y / *VECTOR.Length;
    z = z / *VECTOR.Length;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*kis 5

#include <math.h>

typedef struct 
{
    float x, y, z;
} VECTOR;

void normalize( VECTOR* p )
{
    float w = sqrt( p->x * p->x + p->y * p->y + p->z * p->z );
    p->x /= w;
    p->y /= w;
    p->z /= w;
}
Run Code Online (Sandbox Code Playgroud)

  • 我只想要一个单字母变量,按照惯例,变量是小写的,所以“L”是不可能的,而“l”也不是一个好主意,因为它看起来像“I”或“1”。语法是很好的老C语言。 (3认同)