Конференция "Media" » Эллипс по пикселям
 
  • Тимоха111 (23.01.11 19:03) [0]
    Всем привет,  рисую на канве по пиксельно, как нарисовать эллипс и закрасить его, опять же рисуя только по пикселям?
  • Тимоха111 (23.01.11 19:20) [1]
    без поворота координат, без использования кривых безье, и методов ellipse и т.п., только через pixels?
  • CrytoGen (23.01.11 19:59) [2]
  • Тимоха111 (23.01.11 20:02) [3]
    спасибо, рисую так:
    const r1 = 50;
     r2 = 100;
    var t: real;
     x, y: integer;
    begin
     t := 0;
     x := 0;
     y := 0;
     repeat
       t := t + pi / 500;
       x := round(r1 * cos(t));
       y := round(r2 * sin(t));
       canvas.Pixels[320 + x, 240 + y] := clred;
     until t >= 2 * pi;
    end;

  • Тимоха111 (23.01.11 20:04) [4]
    Попробую описать задачу, мне нужно получить случайную пару X и Y для точки принадлежащей эллипсу и внутри него.
  • CrytoGen (23.01.11 20:26) [5]
    случайную? :)
    a:=random*2*pi;
    x:=random*r1*cos(a);
    y:=random*r2*sin(a);
  • Тимоха111 (23.01.11 22:26) [6]
    спасибо, а если в случае с окружностью будет
    r:=random*2*pi;
    x=random*r*cos(r)
    y=random*r*sin(r)
    так?
  • Тимоха111 (23.01.11 22:31) [7]
    Допустим я знаю максимальный радиус и центр окружности(в координатах x и y), на канве хочу нарисовать эту окружность и закрасить ее путем получения всех пар координат входящих в эту окружность. Как это сделать?
  • Тимоха111 (23.01.11 22:46) [8]
    рисую круг на рабочем столе по пикселям
    var
     DeskTop: TCanvas;
     h: hwnd;
     r: trect;
     x, y, i, j,rr: integer;
    begin
     h := 0;
     DeskTop := TCanvas.Create;
     try
       DeskTop.Handle := GetDC(h);
       x := 0;
       y := 0;
       rr := 10;
       for j := 20 to 100 do
       begin
         y:=0;
         for i := 20 to 100 do
         begin
           if trunc(f_dl(20,20,x,y)) <= rr then
             DeskTop.Pixels[x, y] := clred;
           inc(y);
         end;
         inc(x);
       end;
       ReleaseDC(0, DeskTop.handle);
     finally
       DeskTop.Free;
     end;
    end;

  • CrytoGen (23.01.11 22:48) [9]
    Вы алгоритм Брезенхема уяснили? Таким образом, вы получите все точки окружности. Учитывая что точки симметричны относительно центра закрасить горизонтальными линиями - как два пальца...
  • Тимоха111 (24.01.11 12:08) [10]
    спасибо,CrytoGen, вычитал про этот алгоритм! понравился мне,буду с его помощью делать
  • Gostq (03.05.13 10:35) [11]
    Вот не могу не как понять принцип использования Sin Cos к окружности. Объясните простым человеческим языком, если не сложно.
  • RWolf © (03.05.13 10:49) [12]

    > [11]

    что там может быть непонятного?
    http://upload.wikimedia.org/wikipedia/commons/8/85/Sinus-visualisation.gif
  • Gostq (03.05.13 10:57) [13]
    Вот не могу не как понять принцип использования Sin Cos к окружности. Объясните простым человеческим языком, если не сложно.
  • Павиа (04.05.13 14:04) [14]
    Берёшь окружность радиуса 1. Поместим центр координат в центр окружности. На окружности берёшь произвольную  проводишь через эту точку лучь из центра окружности. Тогда точка будет иметь координаты
    x=1*cos(t)
    y=1*sin(t)
    Где t -есть угол. отсчитываем от оси OX
    Так мы можем описать любую точку на окружности. Т.е. это и будет уравнение окружности в параметрическом виде.
  • зюзя (10.10.13 11:00) [15]
    дельфи для скота
  • scharkhowa (21.10.13 20:02) [16]
    Почему для скота?

    _____________
    сайт http://hummer.ctc-motors.ru/
 
Конференция "Media" » Эллипс по пикселям
Есть новые Нет новых   [118410   +19][b:0][p:0.002]