Hogyan jöjjön rá a program, hogy egy sokszög konvex vagy konkáv e?
Van egy progi amiben létrehozhtok vertexeket amik összekötődnek magától.Minnél több vertexet csinálok annál több szögű lesz a polygon.
A vertexeket a kurzorral át tudom helyezni x,y irányban így változik a polygon alakja is.
Azt akarom megvalósítani,hogy ha a polygon konkáv akkor azt a peogi írja ki ha konvex akkor pedig azt.
Mi a képlet erre szavakba öntve(nem számokba)?
Ha egy sokszög konvex, akkor bármely 2 csúcsa között húzott egyenes a sokszögön belül fut. Talán ezt kéne valahogy kihasználni.
Bár ez így még nem túl konkrét, nincs igazán ötletem milyen képlettel lehetne meghatározni hogy az a vonal a sokszögön belül fut-e :/
To find if a set of points give a convex or a concave polygon you can calculate the convex hull of the points. If all the points are on the convex hull then it is obvious that the polygon is convex. If the number of points on the convex hull is smaller of the total numbers of points then the polygon is concave. To calculate the convex hull you can use the gift wrapping algorithm. This is the simplest convex hull algorithm to implements but it is not the most efficient.For your case (100 points max) this should be enough. In the algorithm, computing the real polar angles can be not easy. A clever way to compute it is to take the determinant of two points (a 2x2 matrix) and sort these values.
forrás:
Olyan kéne ami több mint 100 vagy akár 1000 pont esetében is meghatározza,hogy konvex vagy konkáv e.
Elég ha megkapom a képletet.
Egyenkénti hozzávétellel a konvex burok időigénye O(n log n).
Azaz:
10 pont esetén 10 időegység
100 pont esetén 200
1000 pont esetén 3000
10 000 pont esetén 40 000
Csomagkötöző algoritmus, itt kell egyenként hozzávenni a pontokat:
Gyorsabbat nem is fogsz találni.
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!