Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2014, 21:36   #11
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

ща опишу процедуру

Последний раз редактировалось nelo_001; 09.09.2014 в 21:38.
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 22:16   #12
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Я пытаюсь описать процедуру в привате даёт ошибку , что с ним не так ?

Цитата:
private
procedure cord(x1,x2:integer):integer;
{ Private declarations }
Снимок.JPG
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 22:23   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В процедура не возвращает результата. Именно об этом сообщение об ошибке. function
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.09.2014, 22:37   #14
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Вообщем , тут я разобрался создал процедуру , тер ошибка с вызовом её
Часть описания
Цитата:
public
{ Public declarations }
procedure cord(x1,y1,x2,y2,x3,y3:integer);
end;

var
Form1: TForm1;
x1,y1,x2,y2,x3,y3:integer; a,b,c:real;
implementation

{$R *.dfm}
procedure Tform1.cord(x1,y1,x2,y2,x3,y3:integ er);
begin
a:=( y3-(x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1) )/(x3*(x3-x1-x2)+x1*x2 );
label7.caption:='a = '+floattostr(a);
end;
и сама ошибка при вызове
Безымянный.jpg
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 22:38   #15
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В процедура не возвращает результата. Именно об этом сообщение об ошибке. function
Да, но лучше все же процедуру. Без ):integer; конечно

nelo_001, а что конкретно именна эта процедура(функция) должна вычислять у вас ? :
Код:
procedure cord(x1,x2:integer):integer;
Там же нужно вычмслить коэффициэнты для формулы параболы a,b,c по трем точкам (x1,y1),(x2,y2),(x3,y3) , а у вас только x1,x2

Наверное, как то так
Код:
procedure procABC(x1,x2,x3,y1,y2,y3:integer;var a,b,c:Real);
** исправил

PS Только что увидел #14. То, что выделено - вообще жуть какая-то.

Последний раз редактировалось type_Oleg; 09.09.2014 в 22:42.
type_Oleg вне форума Ответить с цитированием
Старый 09.09.2014, 23:04   #16
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Нет , в смысле , я это конечно убрал , это просто был тест , на то , что много переменных .
_________
Отлично числа совпали
Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Получится:
a= 0.002812913
b= -1.85542328
c= 487.0824074
Что дальше ? 3 точки найдены
_________
2.JPG

Последний раз редактировалось nelo_001; 09.09.2014 в 23:19.
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 23:34   #17
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от nelo_001 Посмотреть сообщение
.. Что дальше ? 3 точки найдены
Вложение 69872
Это не 3 точки, это 3 коэффициента.

Дальше - по формуле y=a*x^2+b*x+c вычисляете координаты точек и строите линию в Canvas. X - перебираете в цикле с шагом, например 5, Y - вычисляете, и с помощью методов Canvas.LineTo и Canvas.MoveTo - рисуется в виде ломаной.

Можно через линии Безьё (Canvas.PolyBezier и Canvas.PolyBezierTo), но я не знаю, насколько это красиво выйдет. И там еще надо массив координат, ну на фиг ...

А можно вообще с шагом 1, просто по точкам , через Canvas.Pixels
Вот так, например - по точкам. И я процедуру сделал не принадлежащую форме, а просто.
Код:
implementation

{$R *.dfm}
procedure procABC(x1,x2,x3,y1,y2,y3:integer;var a,b,c:Real);
 begin
 a:=( y3-(x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1) )/(x3*(x3-x1-x2)+x1*x2 );
 b:=(y2-y1)/(x2-x1)-a*(x1+x2);
 c:=(x2*y1-x1*y2)/(x2-x1)+a*x1*x2;
 end;

procedure TForm1.Button1Click(Sender: TObject); // вычисление a,b,c  и рисование параболы
var a,b,c:Real;
    x1,x2,x3,y1,y2,y3,Xpar,Ypar:Integer;
begin
 x1:=56;  x2:=392;  x3:=632;  y1:=392;  y2:=192;  y3:=438;  // просто для примера
 procABC(x1,x2,x3,y1,y2,y3,a,b,c);
 for Xpar:=x1 to x3 do Canvas.Pixels[Xpar,Round(a*Xpar*Xpar+b*Xpar+c)]:=clRed;
end;

end.
Изображения
Тип файла: jpg парапара.jpg (23.5 Кб, 89 просмотров)

Последний раз редактировалось type_Oleg; 09.09.2014 в 23:56.
type_Oleg вне форума Ответить с цитированием
Старый 10.09.2014, 00:13   #18
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

O_0 .......
-------------
Теперь табличка х у ?
2.JPG

Последний раз редактировалось nelo_001; 10.09.2014 в 00:43.
nelo_001 вне форума Ответить с цитированием
Старый 10.09.2014, 00:36   #19
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Цитата:
Сообщение от nelo_001 Посмотреть сообщение
.. Теперь табличка х у ?
Зачем это ? Это что, координаты вершины параболы вычислять пытаетесь? Зачем ? Кстати, неправильно вычислили.

Все сделано. Задано начало - откуда прыгать, задан конец - куда прыгать .
Третью, промежуточную точку - взяли просто от балды, раз у вас больше нет никаких данных о параболе, кроме начала и конца. Все построено.
type_Oleg вне форума Ответить с цитированием
Старый 10.09.2014, 00:43   #20
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Ура ! нашел ошибку !
все дело было в лефтах и топах
Цитата:
x1:=image2.left;
y1:=image2.Top;
x2:=image3.left;
y2:=image3.Top;
x3:=image1.left;
y3:=image1.Top;
вот как надо было
Ну и вот , что получилось
2.JPG
Спасибо друзья большое !!!!
Завтра уже разберем как шарик по линии пустить

Последний раз редактировалось nelo_001; 10.09.2014 в 01:23. Причина: Нашел ошибку :) тыц тыц тыц
nelo_001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объектов по траектории Vladlena Общие вопросы C/C++ 0 19.05.2013 18:38
Задать движение шара по траектории параболы в Delphi reznor264 Помощь студентам 6 02.11.2010 19:36
Движение курсора по траектории DarkHacker Помощь студентам 0 19.03.2010 18:05
Движение фигуры по траектории Dgohn Общие вопросы Delphi 3 08.01.2009 09:36