bgc-c/docs/versor-set-values-rus.md

1.8 KiB

Ôóíêöèè óñòàíàâëèâàùèå çíà÷åíèÿ êîìïîåíåí âåðñîðà

×òîáû óêàçàòü êîíêðåòíûå çíà÷åíèÿ äëÿ êîìïîíåíò âåðñîðà ïðåäóñìîòðåíû ñïåöèàëüíûå ôóíêöèè.

Äëÿ òèïà BgFP32Versor ôóíêöèÿ èìååò âèä:

inline void bgc_versor_set_values_fp32(const float s0, const float x1, const float x2, const float x3, BgcVersorFP32* versor);

Äëÿ òèïà BgFP64Versor ôóíêöèÿ èìååò âèä:

inline void bgc_versor_set_values_fp64(const double s0, const double x1, const double x2, const double x3, BgcVersorFP64* versor);

Äàííûå ôóíêöèè óñòàíàâëèâàþò çíà÷åíèÿ, ïåðåäàííûå â ïàðàìåòðàõ s0, x1, x2 è x3, â ñîîòâåòñòâóþùå êîìïîíåíòû âåðñîðà, ïåðåäàííîãî ïî óêàçàòåëþ â ïàðàìåòðå versor. Íî åñëè ïîëó÷èâøååñÿ ñîñòîÿíèå íå ÿâëÿåòñÿ íîðìàëèçîâàííûì êâàòåðíèîíîì, òî ôóíêöèè íîðìàëèçóþò âåðñîð.

Ïàðàìåòð versor äîëæåí áûòü êîððåêòíûì óêàçàòåëåì, à òàêæå íå äîëæåí áûòü ðàâåí NULL.

Äàííûå ôóíêöèè òàêæå õîðîøî ïîäõîäÿò äëÿ èíèöèàëèçàöèè ñîñòîÿíèÿ ïåðåìåííûõ òèïîâ BgFP32Versor è BgFP64Versor êàê è ôóíêöèè bgc_versor_reset_fp32 è bgc_versor_reset_fp64.

Ïðèìåð èñïîëüçîâàíèÿ:

#include <stdio.h>
#include <basic-geometry.h>

int main() {
    BgcVersorFP64 versor;
    
    bgc_versor_set_values_fp64(1, 2, 3, 4, &versor);
    
    printf("Versor: (%lf, %lf, %lf, %lf)\n", versor.s0, versor.x1, versor.x2, versor.x3);
    
    return 0;
}

Ðåçóëüòàò:

Versor: (0.182574, 0.365148, 0.547723, 0.730297)

Åñëè â êà÷åñòâå çíà÷åíèé êîìïîíåíò â ôóíêöèþ ïåðåäàòü íóëè, òî âåðñîð, óêàçàòåëü íà êîòîðûé ïåðåäàí â ïàðàìåòðå versor, áóäåò óñòàíîâëåí â ñîñòîÿíèå, ñîîòâåòñòâóþùåå îòñóòñòâèþ ïîâîðîòà:

bgc_versor_set_values_fp64(0, 0, 0, 0, &versor);

Ðåçóëüòàò:

Versor: (1.000000, 0.000000, 0.000000, 0.000000)

Âåðñîðû