47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
# Ôóíêöèè óñòàíàâëèâàùèå çíà÷åíèÿ êîìïîåíåí âåðñîðà
|
|
|
|
×òîáû óêàçàòü êîíêðåòíûå çíà÷åíèÿ äëÿ êîìïîíåíò âåðñîðà ïðåäóñìîòðåíû ñïåöèàëüíûå ôóíêöèè.
|
|
|
|
Äëÿ òèïà **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](./versor-reset-eng.md).
|
|
|
|
Ïðèìåð èñïîëüçîâàíèÿ:
|
|
|
|
#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)
|
|
|
|
[Âåðñîðû](./versor-rus.md)
|
|
|