Mon application donne la distance entre 2 points sur une photo. Auparavant, ils le faisaient à la main et voulaient une application pour le faire. Toutefois, lorsque vous créez la ligne, la distance pour cette ligne en utilisant la formule ci-dessous pour une petite ligne est par exemple 30
. Toutefois, lorsque vous utilisez une règle avec 1/32, la mesure est 5/32.Convertir distance de 2 points en 1/32 de pouce?
Alors qu'est-ce que 30? Quel type de distance est utilisé ici et comment puis-je convertir cela pour afficher le nombre comme il le ferait en utilisant une règle avec une mesure 1/32?
//Distance between 2 points.
// ______________________
//d = √ (x2-x1)^2 + (y2-y1)^2
dist = (Convert.ToInt32(Math.Sqrt(Math.Pow(Math.Abs(p2List[i].X - p1List[i].X), 2) + Math.Pow(Math.Abs(p2List[i].Y - p1List[i].Y), 2))));
Voici donc ce que j'ai fait.
Vector2 src = new Vector2(p1List[i].X, p1List[i].Y); //first point on the image
Vector2 dst = new Vector2(p2List[i].X, p2List[i].Y); //second point on the image
float Density = 38;
Vector2 dif = dst - src; //difference between the vectors
float len = dif.Length(); //length of the vector, in this case the distance in pixels
float inchLen = len/Density; //density is a float with the image DPI's
DataGridViewRow row = dataGridView1.Rows[rowId];
row.Cells["colLength"].Value = inchLen;
Ce, pour la petite ligne que je fis, me donne 0.7649706
Mais je ne sais pas comment faire pour que dire un 3,5,6
ou quoi que ce serait si elle est mesurée à l'aide du 1/32 sur une règle.
Si votre les positions des points sont en pixels, alors vous devez convertir la distance en pixels en pouces –
Et comme ils sont des intergers, vous devez convertir en float/double pour éviter les erreurs mathématiques entières. – TaW
Utilisez la bibliothèque System.Numerics et la classe Vector2, la fonction Length est déjà implémentée avec l'accélération matérielle. – Gusman