Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
ve†er

Объясните построение тетраэдра по двум зад точкам

23.05.2009, 18:28. Показов 1776. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Построить на экране изображение любого тетраэдра (нарисовать в изометрической проекции все шесть ребер) предварительно определив местоположение его вершин по заданным двум вершинам a=(xa, ya, za) и b=(xb, yb, zb)

сама программа(об. оранж. часть plz.thx)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Program ger02;
Uses CRT, Graphabc;
  Type TR= array[1..3000] of real; 
    Procedure PR(X, Y, Z, Zpr, Zf: real; Var Xpi, Ypi: real);
       Var t: real; 
         Begin
           t:=(Zpr-Z)/(Z-Zf); 
           Xpi:=X+X*t;       
           Ypi:=Y+Y*t;        
         end;   
  procedure CIRC(Var a,b:TR; N:integer; fi:real);
      Var r,c,s:real; i:integer;
       Begin
         c:=cos(fi);
         s:=sin(fi);
      for i:=1 to n do
       begin
         r:=c*a[i]-s*b[i];
         b[i]:=a[i]*s+b[i]*c;
         a[i]:=r;
       end;
       end;
 Var t,x, y, z, Xs, Ys: TR;
     fi, Zpr, Zf,  xc, yc, zc, Rk, k, Pk,
     Hx,Hy,Hz,sx,sy,sz,px,py,ax,ay,az,rx,ry,rz,pz,qx,qy,qz,nx,ny,nz, fx,fy,fz,
     nk,mx,my,mz,s,l,r: real;
     i,  N, L0,tx,ty: integer; kod:char;
      BEGIN    [COLOR="#8b0000"]{программное присвоение исходных данных}[/COLOR]
 
 
    N:=8;
      x[1]:=0; x[2]:=0;
        y[1]:=0; y[2]:=0;
         z[1]:=2; z[2]:=6;
  [COLOR="DarkOrange"]  l:=sqrt((x[2]-x[1])*(x[2]-x[1])+(y[2]-y[1])*
             (y[2]-y[1])+(z[2]-z[1])*(z[2]-z[1]));
           ax:=(x[2]-x[1]);
           ay:=(y[2]-y[1]);
           az:=(z[2]-z[1]);
 px:=(x[1]+x[2])/2; py:=(y[1]+y[2])/2; pz:=(z[1]+z[2])/2;
       if az=0 then  begin rx:=0; ry:=0; rz:=1  end
       else   begin ry:=-az;  rx:=-az; rz:=ax+ay end;
 
        s:=sqrt(rx*rx+ry*ry+rz*rz);
 
          mx:=rx/s*sqrt(3)*l/2;
          my:=ry/s*sqrt(3)*l/2;
          mz:=rz/s*sqrt(3)*l/2;
         x[3]:=px+mx;
         y[3]:=py+my;
         z[3]:=pz+mz;
           sx:=(x[1]+x[2]+x[3])/3;
           sy:=(y[1]+y[2]+y[3])/3;
           sz:=(z[1]+z[2]+z[3])/3;
      fx:=(x[1]-sx); fy:=(y[1]-sy); fz:=(z[1]-sz);
      qx:=(x[3]-sx); qy:=(y[3]-sy);qz:=(z[3]-sz);
         nx:=fy*qz-fz*qy;
         ny:=-fx*qz+fz*qx;
         nz:=fx*qy-fy*qx;
      nk:=sqrt(nx*nx+ny*ny+nz*nz);
          Hx:=nx/nk*l*sqrt(2/3);
          Hy:=ny/nk*l*sqrt(2/3);
          Hz:=nz/nk*l*sqrt(2/3);
      x[4]:=sx+Hx;
       y[4]:=sy+Hy;
         z[4]:=sz+Hz;[/COLOR]
    x[5]:=x[1];   y[5]:=y[1];  z[5]:=z[1];
    x[6]:=x[3];   y[6]:=y[3];  z[6]:=z[3];
    x[7]:=x[4];   y[7]:=y[4];  z[7]:=z[4];
    x[8]:=x[2];   y[8]:=y[2];  z[8]:=z[2];
 
 L0:=500;
 
SetWindowSize(L0,L0);
 
             xc:=0; yc:=0; zc:=0;
            for i:=1 to N do
             begin
               xc:=xc+x[i]/N;
                yc:=yc+y[i]/N;
                 zc:=zc+z[i]/N;
             end;
            for i:=1 to N do
             begin
               x[i]:=x[i]-xc;
               y[i]:=y[i]-yc;
               z[i]:=z[i]-zc;
             end;
              Rk:=0;
          for i:=1 to N do
            if Rk<sqrt(x[i]*x[i]+y[i]*y[i]+z[i]*z[i]) then
               Rk:=sqrt(x[i]*x[i]+y[i]*y[i]+z[i]*z[i]);
              Zpr:=rk*5; Zf:=rk*4;
            Pk:=Rk*(Zf-Zpr)/Sqrt(Zf*Zf-Rk*Rk);
            k:=0.5*L0/Pk;
 
while true do
begin   изображения}[/COLOR]
            
 for i:=1 to N do PR(x[i], y[i], z[i], Zpr, Zf, Xs[i], Ys[i]);
 
 Setpencolor(RGB(0,0,200));  
          for i:=1 to N-1 do    
                Line(Round((Xs[i]+Pk)*k),    Round((Pk-Ys[i])*k),
                Round((Xs[i+1]+Pk)*k),   Round((Pk-Ys[i+1])*k));
   kod:=ReadKey;
     fi:=0.11;
     case  kod  of
     #27:exit;
      'a':CIRC(x,y,N,fi);
      'z':CIRC(x,y,N,-fi);
      's':CIRC(y,z,N,fi);
      'x':CIRC(z,y,N,fi);    
      'd':CIRC(x,z,N,fi);
      'c':CIRC(x,z,N,-fi);
      end;
       clearwindow;
end;
END.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2009, 18:28
Ответы с готовыми решениями:

Построение окружности по двум точкам
Ребята, помогите пожалуйста! Препод - злодей, дал задание, а мы еще не работали с графическим интерфейсом и я понятия не имею как он...

Построение усеченного тетраэдра
Вообщем дело такое, нужно построить и закрасить усеченный тетраэдр в Form на Bitmap, использовать другие библиотеки запрещено(сам хотел в...

Линия по двум точкам
Ребята, помогите пожалуйста!!! Нужно создать оси координат (икс и игрек) от -5 до 5 на каждой оси, и ввести с компьютера два числа (a и...

1
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.05.2009, 21:32
Объясните матем. часть программы
Вообще-то это не математический форум и тут мало кто геометрию досконально знает. Вы уж лучше сами разберитесь по учебникам, больше пользы будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.05.2009, 21:32
Помогаю со студенческими работами здесь

Направление по двум точкам
- Здравствуйте Все, Все после праздников! - Возникла задачка, скорее по математике: Есть плоскость. На ней Первая точка с...

Квадрат по двум точкам
Необходимо построить максимальный квадрат по двум точкам без поворотов с неихменной первой тчокой., т.е. (для примера) точки a=(0,0) и...

Уравнение прямой по двум точкам
#include &lt;iostream&gt; using namespace std; void main() { setlocale (LC_ALL, &quot;rus&quot;); int x1, y1, x2, y2, x, y, line; cout &lt;&lt;...

Уравнение прямой по двум точкам
Как известно, через любые две точки на плоскости проходит прямая, и только одна. Напишите функцию equation(), которая по двум заданным...

Площадь прямоугольника по двум точкам.
Фигуры. Одно из требований задачи - посчитать площадь фигур. Любая геометрическая фигура характеризуется точкой привязки и цветом. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru