2014-12-01 2 views
0

У меня есть метод, который возвращает среднюю точку отрезка линии, как определено двумя точками;Получение точки на определенный процент вдоль отрезка линии

public static PointF GetMidPoint(PointF p1, PointF p2) 
{ 
    return new PointF((p1.X + p2.X)/2, (p1.Y + p2.Y)/2); 
} 

Что работает точно так, как ожидалось.

Однако теперь мне нужно найти произвольный процент по сегменту (скажем, 35%), который в принципе должен (?) Быть таким же простым, как;

public static PointF GetArbitaryPoint(PointF p1, PointF p2, double percentage) 
{ 
    return new PointF((p1.X + p2.X)/percentage, (p1.Y + p2.Y)/percentage); 
} 

Но это, кажется, не так, я думаю, что это переменного тока # вопрос - как только вы ввести десятичную точку (будь то точки или PointF) он бросает это игрушки из из коляски и возвращает причудливые результаты.

Итак, я задаюсь вопросом, как изменить приведенное выше, чтобы заставить его делать то, что мне нужно?

Заранее спасибо.

+1

Try (P1.X * процент + P2.X * (100 - процентный))/100 – arunlalam

+0

Это билет , большое спасибо. – user1006221

+0

@ user1006221 Неправильно. Просто попробуйте несколько значений, и вы увидите, что это неправильно. – Servy

ответ

4

Вы используете неправильную формулу.

Взвешенная средняя между двумя точками является p1 + (p2-p1) * percentage, который как раз случается работать на 0,5, как p1 + (p2-p1)*0.5 = (p1 + p2) * 0.5

Смежные вопросы