Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Рекурсия присутствует?
И где эти прикрепленные файлы?
Я код на C++ набрал сам. Строил кривую Безье, но "прилипал" к нулю. То есть я задаю точки далеко от нуля, а он строил из нуля, а потом только обходил предложенные точки. Потом я нашёл Ваш сайт и эту статью. Оказалось, что я забыл возвести t в...
просто я не так понял, здесь мы вращаем точки куба что вращает сам куб. Мне нужно вращать просто 3д объект , данный способ не подходит
Задавайте объект в мировых координатах. Вращайте его относительно мировой системы координат. А при отрисовке преобразуйте в экранные координаты. Посмотрите пример преобразования в экранные координаты.

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Lazarus 0.9.30 win32

Построение множества Жулиа

Код программы: 

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
const
  R: INTEGER = 25;
  mX: INTEGER = 630;
  my: INTEGER = 460;
  numits: integer = 256;
  a: real = -1.7;
  b: real = -1.7;
  c: real = 1.7;
  d: real = 1.7;
  x0: real = 0.885;
  y0: real = 0;
 
var
  colo, p, q, n : integer;
  k, l, xx, yy, x, y : real;
begin
  PaintBox1.Canvas.Clear;
  for p := 1 to Mx do
    for q := 1 to My do
    begin
      k := a + (c - a) * p / Mx;
      L := b + (d - b) * q / My;
      x := k;
      y := L;
      for n := 1 to numits do
      begin
        xx := sqr(x) - sqr(y) - x0;
        yy := 2 * x * y - y0;
        x := xx;
        y := yy;
        if (sqr(x) + sqr(y)) > R then
        begin
          colo := (n * 50) mod 255;
          PaintBox1.Canvas.Pixels[p, q] := RGBToColor(0, 0, colo);
          Break;
        end; { IF }
 
      end;
    end;
end;
 
end.

Прикрепленный файлРазмер
Исходные коды и исполняемый файл763.11 кб