En "général", vous voulez dire tous les non-parallélogramme 4-côté polygones en général ou tout est possible polygones?
Comment à propos du dessin aléatoire d'une ligne reliant les 4 côtés par exemple, Si vous avez ceci:
.BBBB.
A C
A C
.DDDD.
Ensuite générer un point au hasard sur une unité carrée, marque ensuite le point sur la ligne B et D sur le pourcentage de la distance sur l'axe des abscisses. Faire de même sur la ligne A et C à l'aide de la valeur de l'axe Y.
Connectez ensuite le point sur la ligne A à la ligne C et la ligne B à la ligne D, le point d'intersection est alors utilisée comme point aléatoire.
Il n'est pas uniforme à cause des erreurs d'arrondi aidera certains points, mais il devrait être proche si vous travaillez avec des points de valeurs.
La mise en œuvre devrait être plutôt facile, trop, car vous travaillez déjà avec des polygones. Vous devriez déjà avoir du code qui n'ces tâches simples.
Voici un pseudo-code:
void GetRandomPoint(Polygon p, ref float x, ref float y) {
float xrand = random();
float yrand = random();
float h0 = p.Vertices[0] + xrand * p.Vertices[1];
float h1 = p.Vertices[2] + yrand * p.Vertices[3];
float v0 = p.Vertices[0] + xrand * p.Vertices[2];
float v1 = p.Vertices[1] + yrand * p.Vertices[3];
GetLineIntersection(h0, h1, v0, v1, x, y);
}