|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.06.2008, 10:10 | #1 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 25
|
Помогите разобраться в поверхности: цилиндр это или нет
Препод мне сказал, что это должен быть цилиндр. А у меня какая-то ерунда получается. Помогите пожалуйста разобраться. Из-за этого мне зачет не ставят, сказали переделать, завтра сдать.
Нужно построить поверхность: x*x/a*a+y*y/b*b-z*z/c*c=1 implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const al=0.71; var x,y,z:real; mx,my,mz:real; xmax,ymax,xmin,ymin,zmax,zmin:real; xy,yy:integer; xgmin,xgmax,ygmin,ygmax,zgmax,zgmin :integer; a,b,c:integer; i,j,n,m:integer; x0,y0:integer; hx,hy:real; function f(x,y:real;var a,b,c:integer):real; begin //поверхность x*x/a*a+y*y/b*b-z*z/c*c=1 f:=sqrt(abs((c*c)*(-1+(x*x)/(a*a)+(y*y)/(b*b)))); end; begin a:=strtoint(inputbox('окно ввода','введи a',' ')); b:=strtoint(inputbox('окно ввода','введи b',' ')); c:=strtoint(inputbox('окно ввода','введи c',' ')); xmin:=2; xmax:=10; ymin:=-10; ymax:=20; zmin:=-20; zmax:=20; xgmin:=150; xgmax:=500; ygmin:=200; ygmax:=500; zgmax:=500 ; zgmin:=200; x0:=(xgmin+xgmax)div 2; y0:=(ygmin+ygmax)div 2; mx:=(xgmax-xgmin)/(xmax-xmin); my:=(ygmax-ygmin)/(ymax-ymin); mz:=(zgmax-zgmin)/(zmax-zmin); hx:=1/mx; hy:=1/my; n:=round((xmax-xmin)/hx); m:=round((ymax-ymin)/hy); x:=xmin; y:=ymin; with canvas do begin moveto(xgmin,y0); lineto(xgmax,y0); moveto(x0,y0); lineto(x0,ygmin); moveto(xgmax,y0-round((xgmax-x0)*sin(al)/cos(al))); lineto(xgmin,y0+round((x0-xgmin)*sin(al)/cos(al))); textout(xgmax,x0,'X'); textout(x0+5,200,'Z'); textOut(y0,x0+5,'0'); textOut(200,420,'Y'); for i:=1 to n do begin for j:=1 to n do begin xy:=x0+round(mx*x)-round(my*y*cos(al)); yy:=y0+round(my*y*sin(al))-round(mz*f(x,y,a,b,c)); canvas.Pixels[xy,yy]:=clpurple; x:=xmin-j*hx; end; y:=ymin+i*hy; end; end; end; end. Последний раз редактировалось Taisja; 18.06.2008 в 10:52. |
18.06.2008, 11:21 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Попробуйте вот это:
Код:
еще можно имитировать глубину, сделав цвет зависимым от y и обрезать изображение по z. Код:
Последний раз редактировалось alexBlack; 18.06.2008 в 13:01. |
18.06.2008, 18:26 | #3 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 25
|
Большущее спасибо!!! Вы уже в который раз меня спасаете.
|
18.06.2008, 19:09 | #4 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
МатЛаб строит подобное запросто. Это не цилиндр конечно же. (видно их уравнения).
Скажите, а что уравнение цилиндра вообще существует? )) Последний раз редактировалось zetrix; 18.06.2008 в 19:14. |
18.06.2008, 20:23 | #5 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 25
|
Вообще-то существует, выглядит так
x*x/a*a+y*y/b*b=1 - эллиптический цилиндр x*x/a*a-y*y/b*b=1 - гиперболический цилиндр y*y=2*p*x - параболический цилиндр Я сама удивилась, когда мне сказали, что это цилиндр, видимо перепутали малость. |
18.06.2008, 20:58 | #6 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Ошибочная запись.
Последний раз редактировалось puporev; 18.06.2008 в 21:01. |
18.06.2008, 21:10 | #7 |
Пользователь
Регистрация: 31.05.2008
Сообщений: 25
|
А почему ошибочная? Объясните пожалуйста.
|
18.06.2008, 21:12 | #8 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Это я ошибся с записью, удалил ее и написал, что она ошибочная, если кто-то уже прочитал.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти объём куба и площадь его боковой поверхности BASIC | Ветренная | Помощь студентам | 23 | 02.06.2008 13:15 |
OpenGL (цилиндр) | -=<[Evklidd]>=- | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 7 | 01.02.2008 13:51 |
Help!!!Движение точки по поверхности сферы | alex23xandr | Помощь студентам | 4 | 20.05.2007 14:45 |