Compute távolság derékszögű koordináta-rendszer Mathematica

szavazat
5

Elemezve szemmozgásának a képernyőn, tudom a kiindulóponttól a bal alsó sarkát (Hard módosítani ezen a ponton).

Próbálok kiszámolja közötti távolság néhány pontot, és a képernyő közepén azt használja a képlet egyszerű alatt jelenik meg. A probléma az, hogy ezzel a feltételes állítás, ez lesz csúnya.

Sqrt[
(
(fixationX - centerX)^2 + (fixationY - centerY)^2
)
]

Van egy módja annak, hogy testre Norm kiszámítja két pont közötti távolság, és nem egy pont, és a származás?

Vagy az én esetemben, meg a származási lennie a „központ” a jelenlegi koordináta-rendszer?

A kérdést 12/06/2011 13:10
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
4

Lehet csak használja EuclideanDistance

In[1]:= EuclideanDistance[{x,y}, {cx,cy}]
Out[1]= Sqrt[Abs[-cx +x ]^2 + Abs[-cy + y]^2]

Vagy meg egy $Centerés egy új CNorm, pl

$Center = {cx, cy};
CNorm[pos:{x_, y_}] := EuclideanDistance[pos, $Center]
Válaszolt 12/06/2011 13:21
a forrás felhasználó

szavazat
4

Egy kis változás Simon módszer használata az alapértelmezett értéket a függvény, hanem egy globális változó ( $Center).

Tegyük fel, hogy az alapértelmezett eredetű (5, 5), akkor:

myNorm[pos:{_, _}, center_:{5, 5}] := EuclideanDistance[pos, center]

Figyeljük meg a használatát _:{5, 5}, hogy meghatározza az alapértelmezett érték.

Most megteheti:

myNorm[{5, 7}]

(* Out[]= 2 *)

Vagy átmenetileg használjon egy másik a központban:

myNorm[{5, 7}, {8, 8}]

(* Out[]= Sqrt[10] *)

Erre egyszerű funkció, akkor használja EuclideanDistancea második esetben ehelyett, de remélem, láthatjuk a hasznosságát ez a módszer meghatározása myNormbonyolultabb.

A hátránya ennek a módszernek, hogy nem lehet könnyen változtatni az alapértelmezett központ.


A másik variáció, hogy nem teszi lehetővé egy könnyen változtatni az alapértelmezett center, de több részletet, hogy használja Options:

Options[myNorm2] = {Center -> {5, 5}};

myNorm2[pos : {_, _}, OptionsPattern[]] := 
 EuclideanDistance[pos, OptionValue[Center]]

Szintaxis:

myNorm2[{5, 7}]

myNorm2[{5, 7}, Center -> {8, 8}]
   2
   Sqrt [10]

Az alapértelmezett központ:

SetOptions[myNorm2, Center -> {8, 8}];

myNorm2[{5, 7}]
   Sqrt [10]
Válaszolt 12/06/2011 21:20
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more