Javascipt rajzolás? (több lent)
Hella,
Van eddig egy kódom, jelenleg megrajzolja a kört, amit szeretnék és full random valahova egy random vonalat is. A vonalon szeretnék változtatni, azt szeretném, ha a vonal kezdőpontja mindig a kör húrján lenne.
Eddigi kód:
<script language="JavaScript" type="text/javascript">
var c = document.getElementById("RajzLap");
var ctx = c.getContext("2d");
var KorPontjai = new Array();
var RandomSzam = Math.floor((Math.random() * 360) + 1);
var RandomSzam2 = Math.floor((Math.random() * 250) + 100);
for(i = 0; i < 360; i++){
KorPontjai[i] = (i+1);
}
ctx.beginPath();
ctx.arc(143,143,142,0,2*Math.PI);
ctx.moveTo(KorPontjai[RandomSzam], KorPontjai[RandomSzam]);
ctx.lineTo(RandomSzam2, RandomSzam);
ctx.stroke();
</script>
Előre is köszönöm a segítséget
Első gondolatom az volt, hamár egy tömbben letároltad az "összes" pontját a körnek... ...hogy
1.: miért nem kötöd össze ezeket a pontokat "lineTo"-kal? ...és bár nem lenne egy szép kör, de hasonlítana rá és ha már az megvan, akkor...
2.: miért nem kötöd össze 2 véletlenszerű pontját a körnek, ami a húr lenne?
Mellesleg megjegyzem, hogy a "KorPontjai"-tömböd nem a kör pontjait tartalmazza, hanem 1-től 360-ig számokat. Ha így akarod kiszámolni előre a kör pontjait, akkor ajánlom figyelmedbe a szöfüggvényeket (sin, cos) és természetesen minden pontot a körvonalon két koordináta határoz meg (x, y)...
Sokat segítene, ha tudnánk mit akarsz rajzolni. Meg ha betennéd a kódot valahová, ahol lehet látni, hogy mit csinál. Codepen pl.
Apróság de érdemes betartani: a változók nevét kisbetűvel szokás kezdeni. A nagybetűvel kezdődők konstruktor-függvényeknek, típusoknak, ilyesmiknek vannak.
Ja, asszem értem. Te húrt akarsz rajzolni a körbe, ugye?
Ne csináld ezt a KorPontjai dolgot.
Sorsolj 2 számot 0 és 2*PI kozott
var rnd1 = Math.random()*Math.PI*2
var rnd2 = Math.random()*Math.PI*2
számold ki az ezekhez a szögekhez tartozó, de a kör vonalán levő pontok koordinátáit (R legyen a kör sugara)
x1: sin(rnd1)*R
y1: cos(rnd1)*R
a másik pontra ugyanígy, aztán össezötöd a 2 pontot, ahogy csináltad is: moveTo(x1, y1), majd lineTo(x2, y2)
annyi még, hogy mivel a kör sugara nem az origóban van
legyen ox és oy a kör középpontjának koordinátái
x1: ox + sin(rnd1)*R
y1: oy - cos(rnd1)*R
Még mindig nem igazán értem. Lerajzolhatnád egy darab papírra.
Valami ilyesmire gondolsz?
Azóta kicsit átírtam. Esetleg frissítsd párszor, nem küszöböltem ki, hogy ne adjon saját magát metsző vonalat.
Színezéshez kicsit más sorrendben érdemes rajzolni
A területet most így hirtelen nem tudom. Majd mélázom rajta, de te is írd meg, ha van ötleted.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!