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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2009, 15:13   #1
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию помогите с курсовым!

Надо нарисовать молнию, проходящую от неба до земли. На небе должны быть мигающие минусы (заряды со знаком -(Q-)), а на земле плюсы (заряды со знаком +(Q+)). Молния проходит через несколько слоев атмосферы, которые имеют разную скорость (V1,V2,V3 и т.д.).
Молния будет появляться при выполнении условия, что (Q- - Q+)>V.

В общем надо: 1) создать массив Q+ и Q-.
2) Задать значение Q+(i) и Q-(i) с помощью RND (random).
3) реализовать алгоритм.
помогите плз, уже около недели парюсь, а время поджимает.
sp.caster вне форума Ответить с цитированием
Старый 03.03.2009, 16:22   #2
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

выкладывайте сюда то что вы уже неделю "парите". С нуля,очень вряд ли кто-нить поможет...но шанс есть
rocklistener...
5naip вне форума Ответить с цитированием
Старый 03.03.2009, 16:58   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Мы понимаем, что надо. Если денежка есть, запостите тему во фриланс (можете ко мне обратится ). Нет - выкладывайте код (в файле приложенном) и конкретные вопросы, а не
Цитата:
В общем надо: 1) создать массив Q+ и Q-.
2) Задать значение Q+(i) и Q-(i) с помощью RND (random).
3) реализовать алгоритм.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 09.03.2009, 13:54   #4
sp.caster
Пользователь
 
Регистрация: 29.01.2009
Сообщений: 60
По умолчанию

Цитата:
Сообщение от 5naip Посмотреть сообщение
С нуля,очень вряд ли кто-нить поможет...но шанс есть
Сам я в дэлфи мало что понимаю, но с самой молнией мне немного помогли. Осталось расставить все по местам, а то мне кажется там в кашу все намешано, т.к. не запускается... Посмотрите и помогите плз.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Dir:=VectorSubtract ( A, B);
PlaneU := VectorCrossProduct(Dir, YAxis);
PlaneV := VectorCrossProduct(PlaneU, Dir);

NormalizeVector(PlaneU);
NormalizeVector(PlaneV);

C[0] := 0.5*(A[0] + B[0]) + factor*(PlaneU[0]*(random-0.5) + PlaneV[0]*(random-0.5));
C[1] := 0.5*(A[1] + B[1]) + factor*(PlaneU[1]*(random-0.5) + PlaneV[1]*(random-0.5));
C[2] := 0.5*(A[2] + B[2]) + factor*(PlaneU[2]*(random-0.5) + PlaneV[2]*(random-0.5));
end;

procedure Fract(A, B : TVector; factor : Single; maxFracDepth, fracCount : Byte);
var
  Dir, PlaneU, PlaneV, C : TVector;
begin
  inc(fracCount);

  if fracCount > maxFracDepth then  
  begin
    inc(numPoints);                                         
    points[numPoints] := B; 
    exit;
  end;

  Dir := VectorSubtract(A, B);
  PlaneU := VectorCrossProduct(Dir, YHmgVector);
  PlaneV := VectorCrossProduct(PlaneU, Dir);
  NormalizeVector(PlaneU);
  NormalizeVector(PlaneV);
  C[0] := 0.5*(A[0] + B[0]) + factor*(PlaneU[0]*(random-0.5) + PlaneV[0]*(random-0.5));
  C[1] := 0.5*(A[1] + B[1]) + factor*(PlaneU[1]*(random-0.5) + PlaneV[1]*(random-0.5));
  C[2] := 0.5*(A[2] + B[2]) + factor*(PlaneU[2]*(random-0.5) + PlaneV[2]*(random-0.5));

  Fract(A, C, factor*fracDec, maxFracDepth, fracCount); 
  Fract(C, B, factor*fracDec, maxFracDepth, fracCount); 
end;

procedure DoFractalLightning(Src, Dst : TVector; factor, fracDec: Single; maxFracDepth} : Byte; cR, cG, cB : Single);
var i : Integer;
begin
  numPoints := 0;
  points[0] := Src;                             
  fracLev := fracLev * VectorDistance(Src, Dst);    
  Fract(Src, Dst, factor, maxFracDepth, 0);
end;

 glLineWidth(Width);
  glColor4fv(Color);
  glBegin(GL_LINE_STRIP);
    for i := 0 to NumPoints do glVertex3fv(@Points[i]);
  glEnd;

end.

Последний раз редактировалось AlDelta; 09.03.2009 в 14:40.
sp.caster вне форума Ответить с цитированием
Старый 09.03.2009, 14:35   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

за рублей 400 я бы сделал такую а так время только терять
capta1n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плиз, помогите с курсовым в Паскале!!!!СРОЧНО!!!! ~Brilliant~ Помощь студентам 2 21.02.2009 21:15
Помогите с курсовым на С++ Solovei_MC Помощь студентам 2 14.06.2008 15:10
!Помогите с Курсовым! MyVLink Паскаль, Turbo Pascal, PascalABC.NET 14 04.06.2008 22:05