forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Вектора и сейф экрана... (http://forum.boolean.name/showthread.php?t=11408)

VotapilD 11.12.2009 18:54

Вектора и сейф экрана...
 
Какой процедурой можно рисовать вектор, зная координаты 3 точек: предпредпоследней, предпоследней, последней.
И востановку рисунка, после рисования менюшки? Может библиотечка какая...

ViNT 11.12.2009 19:27

Ответ: Вектора и сейф экрана...
 
Линии только по двум точкам можно рисовать (начало - конец).
Восстановить содержимое экрана можно, сохранив его предварительно функцией ImageFromCanvas.

odd 12.12.2009 12:58

Ответ: Вектора и сейф экрана...
 
Вы имеете ввиду кривую Безье?
Попробую поискать алгоритм в нете.

VotapilD 12.12.2009 20:52

Ответ: Вектора и сейф экрана...
 
Я пытался цыклом... Была идея реализовать с помощью xspead yspead, но ненаю с чего начать...

VotapilD 14.12.2009 23:06

Ответ: Вектора и сейф экрана...
 
Так, идей ни у кого нет... Я долго думал))) Но не смог придумать ничего лучше, чем "Надо создать библиотеку для работы с векторами..."
Может всё таки цикл подскажете?)))

DIMMON4IK 14.12.2009 23:35

Ответ: Вектора и сейф экрана...
 
Тебе не это нужно?

VotapilD 15.12.2009 19:21

Ответ: Вектора и сейф экрана...
 
Да, забыл отписаться, что нашёл. (Спасибо ViNTу) Просто она позже появилась)

VotapilD 15.12.2009 22:38

Ответ: Вектора и сейф экрана...
 
Код:

Program Nya;
Uses    sensor,bezier;
Var    xf, yf, xs, ys, xb, yb, sx, xy:integer;
state, i, j, dre: integer;
//
//Безье изгиб
Procedure MakeBpoints;
Begin
        xb:=xs-(xf-xs)/2;
        yb:=ys-(yf-ys)/2;
        xf:=xs;
        yf:=ys;
        xs:=pointer_dragged_x;
        ys:=pointer_dragged_y;
        DrawBezier(xf, yf, xb, yb, xs, ys);
End;
//
Begin
    sensor.init; // Инициализация библиотеки
    repeat
        state:=pointer_state; // Читаем состояние сенсора
        MakeBpoints;//Просчт точки Безье
        // Рисуем нормали
        SetColor(200, 200, 200);
        DrawLine(xf, yf, xb, yb);
        DrawLine(xb, yb, xs, ys);
        SetColor(0, 0, 0);
        //
        Repaint; // Отрисовка линии
                                delay(20);
    until false;

В чем ошибка? Телефон всё время рисует из точки 0;0 ((
Philips X800

Bruteo 15.12.2009 23:29

Ответ: Вектора и сейф экрана...
 
Цитата:

Сообщение от VotapilD (Сообщение 129793)
В чем ошибка? Телефон всё время рисует из точки 0;0 ((
Philips X800

Думаю, нужно смотреть в сторону функций для работы с сенсорным экраном. Pointer_pressed_x с последующим сбросом данных библиотеки, возможно, спасёт

12121 16.12.2009 00:56

Ответ: Вектора и сейф экрана...
 
Попробуй вызывать MakeBpoints; только если есть прикосновение к экрану.
А так xs:=pointer_dragged_x;
ys:=pointer_dragged_y; наверно нули возвращают.

VotapilD 21.12.2009 01:50

Ответ: Вектора и сейф экрана...
 
/me ОЧЕНЬ ЗЛОЙ!
Такую простую вещь и не могу сделать(
Плиз, ребята, хелп^^
Код:

Program Pointer;
Uses    sensor,bezier;//uses
Var    xf, yf, xs, ys, xb, yb, sx, xy,nya, i, j, dre, xx, yy, state, key: integer;


//Безье изгиб
Procedure MakeBpoints;
Begin
 state:=pointer_state; // Читаем состояние сенсора
 if state=1 then begin
        if (xf=0) and (yf=0) then begin
        xf:=pointer_dragged_x;
        yf:=pointer_dragged_y;
        nya:=1;
  end;
  else begin
        xb:=xs-(xf-xs)/2;
        yb:=ys-(yf-ys)/2;       
        xf:=xs;
        yf:=ys;
 end;
  xs:=pointer_dragged_x;
  ys:=pointer_dragged_y;
        if nya=1 then begin
        xb:=xf-(xf-xs)/2;
        yb:=yf-(yf-ys)/2;       
        nya:=0;
  end;
        DrawBezier(xf, yf, xb, yb, xs, ys);
 end;
 else begin
        xf:=0;//x First
        yf:=0;
        xb:=0;//x Bezie
        yb:=0;
        xs:=0;//x Second
        ys:=0;
 end;
End;
//



//          >=<=<=!=ИГРА=!=>=>=<
Begin
sensor.init; // Инициализация библиотеки
repeat
        MakeBpoints;
        Repaint; // Отрисовка линии
until false;
End.

Вектор не прерывается, ведёт себя странно при рисовании(не так искривляется (по оси x, по крайней мере))

VotapilD 22.12.2009 16:26

Ответ: Вектора и сейф экрана...
 
Нашёл) Там функции типа xs:=pointer_dragged_x; ys:=pointer_dragged_y; при state=1 возвращают старые значения...

VotapilD 22.12.2009 23:21

Ответ: Вектора и сейф экрана...
 
Всё супер! Тема закрыта! Всем спасибо!(Кому надо, ставил плюсы) Буду продолжать разработку проги, но дальше уже мелочи, но приятные)


Часовой пояс GMT +4, время: 13:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot