Kezdőoldal » Tudományok » Alkalmazott tudományok » Hogy számoljam ki a terület...

Hogy számoljam ki a terület melyik pontjára esik ez?

Figyelt kérdés

Van az átláthatóság kedvéért egy 1000 x 1000 blokk nagyságú területem.

Ezen a területen van egy kiinduló pont, ez legyen az X=600 Y=400.


Ha szeretném kiszámolni, hogy ha húzok egy képzeletbeli vonalat, a kiinduló pontból egy bizonyos szög mentén (példa kedvéért 127°), a terület széléig, a terület melyik legkülső blokkjára fog esni a képzeletbéli vonal vége?


Vizuálisan: [link]


Ezt szeretném kiszámolni valahogy, 2 órája próbálkozom vele, de nem jött össze sajnos. Köszönöm a válaszokat.


2022. jan. 5. 19:22
 1/3 anonim ***** válasza:
100%

A 127°-ot mihez képest méred?


Egyébként ez egy alapszintű trigonometriai feladatra vezethető vissza, egy egyszerű tangens itt csodákra képes egy derékszögű háromszögben.


Sőt, még a szakasz hossza is kiszámolható egy szinusszal vagy egy koszinusszal.

2022. jan. 5. 19:34
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

A képed alapján a hülye x/y irányokkal és szöggel:


400 - (1000-600)*tan(37 fok) = 98.57


Hogy a blokkjaidat hogy értelmezed, melyik pontjából indul a vonal, és hogy az ezredik blokk eleje vagy vége érdekel, majd eldöntöd te. Ezektől függően plusz-mínusz 1 lehet a végeredmény

2022. jan. 6. 13:34
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

Egy szoftverhez kellett, a megoldás ennyire nem volt egyszerű:


var twoPI = Math.PI*2;

var theta = deg * Math.PI / 180;


while (theta < -Math.PI) {

theta += twoPI;

}


while (theta > Math.PI) {

theta -= twoPI;

}


var rectAtan = Math.atan2(rect.height, rect.width);

var tanTheta = Math.tan(theta);

var region;


if ((theta > -rectAtan) && (theta <= rectAtan)) {

region = 1;

} else if ((theta > rectAtan) && (theta <= (Math.PI - rectAtan))) {

region = 2;

} else if ((theta > (Math.PI - rectAtan)) || (theta <= -(Math.PI - rectAtan))) {

region = 3;

} else {

region = 4;

}


var edgePoint = {x: rect.width/2, y: rect.height/2};

var xFactor = 1;

var yFactor = 1;


switch (region) {

case 1: yFactor = -1; break;

case 2: yFactor = -1; break;

case 3: xFactor = -1; break;

case 4: xFactor = -1; break;

}


if ((region === 1) || (region === 3)) {

edgePoint.x += xFactor * (rect.width / 2.); // "Z0"

edgePoint.y += yFactor * (rect.width / 2.) * tanTheta;

} else {

edgePoint.x += xFactor * (rect.height / (2. * tanTheta)); // "Z1"

edgePoint.y += yFactor * (rect.height / 2.);

}

2022. jan. 6. 13:47

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!