obliczenia na double w js

0

Jak wymusić/używać w obliczeniach double precission w js?

Przykładowo w c++ mam taki kod do mnożenia wektorów:

void vect4double::mulq(TP4d &a) // pre-mult: ab, b = this
{ // a
b = as*bs-ab + as.bv + bs.av + av x bv; a = (s, v=x,y,z)

vect4double b = *this;

x = a.yb.z - a.zb.y + a.xb.s + b.xa.s;
y = a.zb.x - a.xb.z + a.yb.s + b.ya.s;
z = a.xb.y - a.yb.x + a.zb.s + b.za.s;

s = a.sb.s - ab;

// r += ab.s + ba.s;
// r.x += a.xb.s + b.xa.s;
// r.y += a.yb.s + b.ya.s;
// r.z += a.zb.s + b.za.s;
}

gdzie vect4double to klasa, w której x,y,z, i s typu double (nie single float).

można to przerobić do javascript?

0

"Standardowo" liczby w JS są double. Jak chcesz konkretną liczbę cyfr po przecinku to użyj Number.toFixed

0

OK. A jak w js wygląda sprawa operatorów?

Np. iloczyn skalarny wektorów w c++:

m = a * b; // gdzie a i b to wektory

trzeba to ładować wszędzie na piechotę? o tak:
m = a.xb.x + a.yb.y + a.z*b.z;

0

Takie wektory to masz w Matlab lub Julii.
W innych językach musisz się trochę bardziej wysilić.

0

możesz poszukać biblioteki do JSa do obsługi wektorów, może znajdziesz coś ciekawego: https://www.npmjs.com/search?q=vector%20math&page=1&ranking=optimal

0
vpiotr napisał(a):

Takie wektory to masz w Matlab lub Julii.
W innych językach musisz się trochę bardziej wysilić.

W jakich językach?

Mówię o c++.
Tam robisz sobie operatory jakie chcesz...
np.:
inline double operator * (Vacek a, Vacek b)
{ return a.x + b.z / 2 - a.z; }

0

rozumiem że w js nie ma takich możliwości, i trzeba to rypać ręcznie... ewentualnie nazwami, jak np:

double dot(Pita4 a, Pita4 b)
{ return a*b; // hihi! }

a potem tak:

a = Pita4(1,2,3,4), b = Pita4(4,3,2,1);

m = dot(a, b); // = a * b

0

W js nie ma przeciążenia operatorów, użyj funkcji.

0

A co jest bardziej ważne? Wygoda obliczeń czy to, żeby było w JS?

Jeśli wygoda obliczeń, to JS nie jest językiem do wygodnego robienia obliczeń (ludzie raczej piszą takie rzeczy w Pythonie, Matlabie, czy innych językach). A jeśli JS jest musem (bo potrzebujesz do czegoś konkretnego obliczeń, np. do gry przeglądarkowej) to piszesz takie obliczenia w taki sposób, w jaki możesz (na ile ci język czy użyte biblioteki pozwalają) i nie narzekasz.

Swoją drogą w JS można korzystać z WebGL i masz tam specjalny język GLSL, który zawiera jakieś dodatkowe operatory:
http://learnwebgl.brown37.net/12_shader_language/glsl_mathematical_operations.html
tylko miej świadomość, że to język specjalnego zastosowania (do shaderów odpalanych przez kartę graficzną) i komunikacja między nim, a JSem jest utrudniona i zapośredniczona przez specjalne API

0
LukeJL napisał(a):

A co jest bardziej ważne? Wygoda obliczeń czy to, żeby było w JS?

Jeśli wygoda obliczeń, to JS nie jest językiem do wygodnego robienia obliczeń (ludzie raczej piszą takie rzeczy w Pythonie, Matlabie, czy innych językach). A jeśli JS jest musem (bo potrzebujesz do czegoś konkretnego obliczeń, np. do gry przeglądarkowej) to piszesz takie obliczenia w taki sposób, w jaki możesz (na ile ci język czy użyte biblioteki pozwalają) i nie narzekasz.

Swoją drogą w JS można korzystać z WebGL i masz tam specjalny język GLSL, który zawiera jakieś dodatkowe operatory:
http://learnwebgl.brown37.net/12_shader_language/glsl_mathematical_operations.html
tylko miej świadomość, że to język specjalnego zastosowania (do shaderów odpalanych przez kartę graficzną) i komunikacja między nim, a JSem jest utrudniona i zapośredniczona przez specjalne API

A to całkiem niezły pomysł - załadować obliczenia do shadera... tylko że tam są tylko single floaty, niestety.

http://blog.hvidtfeldts.net/index.php/2012/07/double-precision-in-opengl-and-webgl/

'WebGL and double precision'
wywala mi trzy błędy:
ERROR: 0 'float' : illegal type argument for default precision qualifier
ERROR: 0 'float' : illegal type argument for default precision qualifier
ERROR: 0 'float' : illegal type argument for default precision qualifier

i rysuje czarny ekran.

1

Z nudów znalezione:
http://mathjs.org/docs/datatypes/matrices.html
https://www.npmjs.com/package/linear-algebra
http://gpu.rocks/

Nie pytajcie mnie jak tego używać. Po prostu wpisałem w wyszukiwarce "javascript vector matrix calculations".

0
vpiotr napisał(a):

Z nudów znalezione:
http://mathjs.org/docs/datatypes/matrices.html
https://www.npmjs.com/package/linear-algebra
http://gpu.rocks/

Nie pytajcie mnie jak tego używać. Po prostu wpisałem w wyszukiwarce "javascript vector matrix calculations".

Problem w tym że nie chodzi o używanie, lecz o programowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1