Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Изображение шара в Pascal (http://www.tehnari.ru/f41/t102667/)

Asya_inter 24.05.2015 18:12

Изображение шара в Pascal
 
Изобразить гладкий красный шар, освещенный Солнцем. Как изобразить куб я знаю, а как шар затрудняюсь. Или нужно просто нарисовать окружность и на ней уже делать тени, блики свет, чтобы он стал объёмным? Подскажите пожалуйста!

Daniellos 24.05.2015 18:20

Pascal это который 7.0 ?

Vladimir_S 24.05.2015 18:55

Вложений: 2
Цитата:

Сообщение от Asya_inter (Сообщение 1133263)
Изобразить гладкий красный шар, освещенный Солнцем. Как изобразить куб я знаю, а как шар затрудняюсь. Или нужно просто нарисовать окружность и на ней уже делать тени, блики свет, чтобы он стал объёмным? Подскажите пожалуйста!

Вероятно, что-то в таком роде?
Вложение 227282 Вложение 227283
Но тут действительно нужно знать, в каком Паскале это требуется. В графических заданиях такая информация обязательна.

Asya_inter 25.05.2015 02:01

Цитата:

Сообщение от Vladimir_S (Сообщение 1133271)
Вероятно, что-то в таком роде?

Да, именно (желательно такой, который слева)

Цитата:

Сообщение от Daniellos (Сообщение 1133266)
Pascal это который 7.0 ?

Я и в Turbo и в ABC пишу, так что, без разницы. (но чаще на ABC).

AlexZir 25.05.2015 06:54

Цитата:

Сообщение от Asya_inter (Сообщение 1133393)
Я и в Turbo и в ABC пишу

Ну и в чем проблема? Вы не знаете, как организовать заливку?

Asya_inter 25.05.2015 11:53

Цитата:

Сообщение от AlexZir (Сообщение 1133396)
Ну и в чем проблема? Вы не знаете, как организовать заливку?

Проблема в том, что я не знаю как сделать градацию света и тени, а также изобразить именно ГЛАДКИЙ, а не матовый шар. Если кто-то что-то знает, то поделитесь пожалуйста!

Vladimir_S 25.05.2015 14:18

Вложений: 1
Цитата:

Сообщение от Asya_inter (Сообщение 1133442)
а также изобразить именно ГЛАДКИЙ, а не матовый шар.

Увы-увы, у меня получается такой... шероховатый. В общем, надо издали смотреть и без очков - тогда нормально. Вот - в Turbo (Free):
Код:

Uses Graph, CRT;

Var
 R1,X1,Y1,X2,Y2,X,Y:Word;
 Sgm:Real;
 i:LongInt;

Procedure Gs(Sigma:Real; var Xg:Word; var Yg:Word);
var
 u,v,x,y:real;
begin
 u:=Random;
 v:=Random;
 x:=Sqrt(-Ln(v)*2)*Cos(u*2*Pi)*Sigma;
 y:=Sqrt(-Ln(v)*2)*Sin(u*2*Pi)*Sigma;
 if Sqrt(Sqr(X2+x-1.0*X1)+Sqr(1.0*Y2-y-Y1))>R1 then
  begin
  Xg:=X2;
  Yg:=Y2;
  end
 else
  begin
  Xg:=Round(1.0*X2+x);
  Yg:=Round(1.0*Y2-y);
  end;
end;

Begin
 InitGraph(...  { Тут - самостоятельно! }
 Randomize;
 SetBkColor(7);
 R1:=GetMaxY div 4;
 X1:=GetMaxX div 2;
 Y1:=GetMaxY div 2;
 SetColor(8);
 SetFillStyle(SolidFill,8);
 FillEllipse(X1,Y1,R1,R1);
 X2:=Round(X1+0.3*R1);
 Y2:=Round(Y1-0.3*R1);
 Sgm:=R1/3;  {Red}
 for i:=1 to 400000 do
  begin
  Gs(Sgm,X,Y);
  PutPixel(X,Y,4);
  end;
 Sgm:=R1/4;  {LightRed}
 for i:=1 to 80000 do
  begin
  Gs(Sgm,X,Y);
  PutPixel(X,Y,12);
  end;
 Sgm:=R1/5;  {Yellow}
 for i:=1 to 10000 do
  begin
  Gs(Sgm,X,Y);
  PutPixel(X,Y,14);
  end;
 ReadKey;
 CloseGraph;
End.


Asya_inter 30.05.2015 01:05

Вложений: 1
Vladimir_S, я знаю, что нужно использовать формулу расчета видимости яркости гладкой поверхности с учетом зеркального отражения(она на фото). Но как её применить я не знаю...Может вы знаете?Вложение 227961

Vladimir_S 30.05.2015 09:02

Цитата:

Сообщение от Asya_inter (Сообщение 1134735)
Vladimir_S, я знаю, что нужно использовать формулу расчета видимости яркости гладкой поверхности с учетом зеркального отражения(она на фото). Но как её применить я не знаю...Может вы знаете?

Догадываюсь... Вообще-то с этого (с выкладывания формул) и нужно было начинать. Но это - ой, сколько работы... Между прочим, всё равно поверхность шара получится, как и у меня - такой... ноздреватой. Потому что я не вижу иных средств сымитировать переменную яркость, кроме как густотой точек.
Ладно, раз примененное мною гауссово распределение не годится, попробую с косинусным.
P.S. Мгновенно не обещаю.
P.P.S. Но задачка - интересная.

Asya_inter 31.05.2015 02:50

Vladimir_S, буду очень рада, если подскажите! Получается, нельзя сделать плавного перехода в цвете?


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.