PDA

View Full Version : سوال: پیدا کردن مختصات میانه در هر نوع مثلث



shecarchi
جمعه 25 آذر 1390, 11:36 صبح
سلام دوستان من دارم یه برنامه ای مینویسیم نیاز دارم که مختصات تقاطع میانه ها رو در مثلث داشته باشم . از فرمول زیر استفاده کردم :

x=xa+xb+xc/3
y=ya+yb+yc/3

این فرمول تو همه مثلث ها جواب نمیده مثلا در مثلث قاثم الزاویه که تقاطع میانه ها میفته رو وتر یا مثلتی که تقاطع میانش میفته خارح از مثلث .

حالا از چه روشی استفاده کنم؟

shecarchi
جمعه 25 آذر 1390, 13:36 عصر
خودم فهمیدم :چشمک: :

double d = 2 * (((Node)nodelist[0]).Point.X - ((Node)nodelist[2]).Point.X) * (((Node)nodelist[2]).Point.Y - ((Node)nodelist[1]).Point.Y) + 2 * (((Node)nodelist[1]).Point.X - ((Node)nodelist[2]).Point.X) * (((Node)nodelist[0]).Point.Y - ((Node)nodelist[2]).Point.Y);
double m1 = (Math.Pow(((Node)nodelist[0]).Point.X, 2) - Math.Pow(((Node)nodelist[2]).Point.X, 2) + Math.Pow(((Node)nodelist[0]).Point.Y, 2) - Math.Pow(((Node)nodelist[2]).Point.Y, 2));
double m2 = (Math.Pow(((Node)nodelist[2]).Point.X, 2) - Math.Pow(((Node)nodelist[1]).Point.X, 2) + Math.Pow(((Node)nodelist[2]).Point.Y, 2) - Math.Pow(((Node)nodelist[1]).Point.Y, 2));
double nx = m1 * (((Node)nodelist[2]).Point.Y - ((Node)nodelist[1]).Point.Y) + m2 * (((Node)nodelist[2]).Point.Y - ((Node)nodelist[0]).Point.Y);
double ny = m1 * (((Node)nodelist[1]).Point.X - ((Node)nodelist[2]).Point.X) + m2 * (((Node)nodelist[0]).Point.X - ((Node)nodelist[2]).Point.X);
double cx = nx / d;
double cy = ny / d;
double dx = cx - ((Node)nodelist[0]).Point.X;
double dy = cy - ((Node)nodelist[0]).Point.Y;
double distance = Math.Sqrt(dx * dx + dy * dy);

Drawarc("", new PointF((float)(cx - distance), (float)(cy - distance)), (float)(distance * 2), (float)(distance * 2));