Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 04.06.2011, 11:04   #1 (permalink)
ramp
Новичок
 
Регистрация: 04.06.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Thumbs up В прямой четырехугольной призме провести сечение, проходящее через сторону нижнего ос

Помогите решить пожалуйста.
ramp вне форума   Ответить с цитированием

Старый 04.06.2011, 11:04
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Похожие топики были созданы ранее, они могут вам хорошо помочь

Корпорация Intel смотрит в сторону процессора с 1000 ядрами.
Моддеры Нижнего Тагила, отзовитесь!

Старый 04.06.2011, 11:05   #2 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Вам нужна программа для решения или геометрическое построение?
Long Cat вне форума   Ответить с цитированием
Старый 04.06.2011, 11:11   #3 (permalink)
ramp
Новичок
 
Регистрация: 04.06.2011
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

В прямой четырехугольной призме провести сечение, проходящее через сторону нижнего основания под углом 30 градусов к основанию

Да в Турбо паскале с модулем Graph.

Нужно само построение.
ramp вне форума   Ответить с цитированием
Старый 04.06.2011, 11:15   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Однако. Я могу это реализовать, но не за "спасибо", к сожалению.
Наукоемкое это дело - сечения корректно строить.

Последний раз редактировалось Long Cat; 04.06.2011 в 11:23
Long Cat вне форума   Ответить с цитированием
Старый 04.06.2011, 11:30   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вот реализация построения сечения в цилиндре Помогите с задачкой по графике, для построения сечения в призме можете им воспользоваться
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 04.06.2011, 11:52   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от ramp Посмотреть сообщение
прямой четырехугольной призме
Прямой призмой называется призма, у которой боковое ребро перпендикулярно плоскости основания, значит, углы при основании = 90 градусам. Судя по названию - в основании лежит четырехугольник.
Так как вы явно не указали, что именно лежит в основании, пойдем по пути наименьшего сопротивления, будем считать, что в основании лежит паралелограмм.
Цитата:
Сообщение от ramp Посмотреть сообщение
сечение, проходящее через сторону нижнего основания
в данном случае сечением будет выступать четырехугольник, одна сторона которого будет лежать на стороне нижнего основания, проивоположная сторона будет получена путем поворота плоскости нижнего основания на угол 30 градусов. Одним из свойств поворота является сохранения количества углов, следовательно сечение также будет являться четырехугольником. На экране его можно нарисовать как фигуру из 4 линий. Вам останется только явно указать длину сторон основания, ребра и произвести нехитрые вычисления координат вершин этой фигуры
Дерзайте, учебник геометрии вам в помощь!
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 04.06.2011, 12:00   #7 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
значит, все углы = 90 градусам, рассматриваемая фигура - прямоугольный параллелепипед
Неверно!

В основании прямой четырехугодной призмы может лежать хоть трапеция, так что это не параллелепипед.
Long Cat вне форума   Ответить с цитированием
Старый 04.06.2011, 12:09   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Виноват, осознал, принял к сведению, исправил, так пойдёт?
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 04.06.2011, 15:21   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну, вообще-то, ежели без аксонометрии, то не так уж это и сложно. На верхнем рисунке изображен произвольный прямоугольник, лежащий в основании призмы. Пусть секущая плоскость проходит через ребро АВ. Систему координат XYZ выберем так: Х параллелен ребру АВ, Y перпендикулярна X, тоже лежит в плоскости рисунка и смотрит вниз, Z (направление боковых ребер призмы) перпендикулярна плоскости рисунка и смотрит на нас. Все размеры при расчете заданы в пикселах графического DOS-экрана (640х480). Если за начало координат принять, как обычно, левый верхний угол экрана, то координаты вершин четырехугольника XY будут: A(100,150), B(200,150), C(240,50) и D(70,100). Так мне захотелось. Координаты вспомогательных точек E и F будут E(70,150) и F(240,150).
Теперь найдем координаты Z точек пересечения плоскости с боковыми ребрами, проходящими через C и D. Обозначим эти точки пересечения С1 и D1. Координаты составят ZC1=CF*tg30°, ZD1=DE*tg30°.
Осталось теперь путем простейших манипуляций с теоремой Пифагора построить фигуру, лежащую в секущей плоскости. Что и сделано (нижний рисунок).
Код:
Uses Graph, CRT;
VAR
 ZD,ZC:Real;

Function Tan(x:Real):Real;
begin
 Tan:=Sin(x)/Cos(x);
end;

BEGIN
 InitGraph(..);{ПАРАМЕТРЫ ФУНКЦИИ ПОДСТАВЬТЕ САМИ}   
 
 SetLineStyle(SolidLn,0,ThickWidth);
 Line(100,150,70,100);
 Line(70,100,240,50);
 Line(240,50,200,150);
 Line(200,150,100,150);
 SetLineStyle(SolidLn,0,NormWidth);
 Line(50,150,100,150);
 Line(200,150,260,150);
 SetLineStyle(DottedLn,0,NormWidth);
 Line(70,100,70,150);
 Line(240,50,240,150);
 SetTextJustify(CenterText,TopText);
 OutTextXY(70,155,'E');
 OutTextXY(100,155,'A');
 OutTextXY(200,155,'B');
 OutTextXY(240,155,'F');
 SetTextJustify(RightText,CenterText);
 OutTextXY(65,100,'D');
 SetTextJustify(LeftText,CenterText);
 OutTextXY(245,50,'C');

 ZC:=100*tan(Pi/6);
 ZD:=50*tan(Pi/6);
 SetLineStyle(SolidLn,0,ThickWidth);
 Line(100,400,70,400-Round(SQRT(SQR(50)+SQR(ZD))));
 Line(70,400-Round(SQRT(SQR(50)+SQR(ZD))),240,
                 400-Round(SQRT(SQR(100)+SQR(ZC))));
 Line(240,400-Round(SQRT(SQR(100)+SQR(ZC))),200,400);
 Line(200,400,100,400);
 SetTextJustify(CenterText,TopText);
 OutTextXY(100,405,'A');
 OutTextXY(200,405,'B');
 SetTextJustify(RightText,CenterText);
 OutTextXY(65,400-Round(SQRT(SQR(50)+SQR(ZD))),'D1');
 SetTextJustify(LeftText,CenterText);
 OutTextXY(245,400-Round(SQRT(SQR(100)+SQR(ZC))),'C1');
 SetFillStyle(3,white);
 FloodFill(150,350,white);
 ReadKey;
 CloseGraph;
END.
Если у Вас Windows-Pascal и рисование идет черным по белому, то в SetFillStyle и FloodFill нужно, вероятно, заменить white на black.
Миниатюры
prism.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 04.06.2011, 19:46   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Впрочем, ладно - так уж и быть. Можно и с аксонометрией. Только вот не знаю, будет ли в том толк - подобные программы надо писать самому. Это куда легче, чем в чужих разбираться.
Код:
Uses Graph, CRT;
VAR
 ZD,ZC:Real;

Function Tan(x:Real):Real;
begin
 Tan:=Sin(x)/Cos(x);
end;

BEGIN
 InitGraph(..);{ПАРАМЕТРЫ ФУНКЦИИ ПОДСТАВЬТЕ САМИ}    

 SetLineStyle(SolidLn,0,ThickWidth);
 Line(100,150,70,100);
 Line(70,100,240,50);
 Line(240,50,200,150);
 Line(200,150,100,150);
 SetLineStyle(SolidLn,0,NormWidth);
 Line(50,150,100,150);
 Line(200,150,260,150);
 SetLineStyle(DottedLn,0,NormWidth);
 Line(70,100,70,150);
 Line(240,50,240,150);
 SetTextJustify(CenterText,TopText);
 OutTextXY(70,155,'E');
 OutTextXY(100,155,'A');
 OutTextXY(200,155,'B');
 OutTextXY(240,155,'F');
 SetTextJustify(RightText,CenterText);
 OutTextXY(65,100,'D');
 SetTextJustify(LeftText,CenterText);
 OutTextXY(245,50,'C');

 ZC:=100*tan(Pi/6);
 ZD:=50*tan(Pi/6);
 SetLineStyle(SolidLn,0,ThickWidth);
 Line(100,400,70,400-Round(SQRT(SQR(50)+SQR(ZD))));
 Line(70,400-Round(SQRT(SQR(50)+SQR(ZD))),240,
                 400-Round(SQRT(SQR(100)+SQR(ZC))));
 Line(240,400-Round(SQRT(SQR(100)+SQR(ZC))),200,400);
 Line(200,400,100,400);
 SetTextJustify(CenterText,TopText);
 OutTextXY(100,405,'A');
 OutTextXY(200,405,'B');
 SetTextJustify(RightText,CenterText);
 OutTextXY(65,400-Round(SQRT(SQR(50)+SQR(ZD))),'D1');
 SetTextJustify(LeftText,CenterText);
 OutTextXY(245,400-Round(SQRT(SQR(100)+SQR(ZC))),'C1');
 SetFillStyle(3,white);
 FloodFill(150,350,white);

 MoveTo(350,400);
 LineTo(450,400);
 LineTo(490+Round(100*Cos(Pi/6)),400-Round(100*Sin(Pi/6)+ZC));
 LineTo(320+Round(50*Cos(Pi/6)),400-Round(50*Sin(Pi/6)+ZD));
 LineTo(350,400);
 SetFillStyle(3,white);
 FloodFill(400,390,white);
 MoveTo(450,400);
 LineTo(490+Round(100*Cos(Pi/6)),400-Round(100*Sin(Pi/6)));
 LineTo(320+Round(50*Cos(Pi/6)),400-Round(50*Sin(Pi/6)));
 LineTo(350,400);
 LineTo(350,150);
 Line(450,400,450,150);
 Line(490+Round(100*Cos(Pi/6)),400-Round(100*Sin(Pi/6)),
      490+Round(100*Cos(Pi/6)),150-Round(100*Sin(Pi/6)));
 Line(320+Round(50*Cos(Pi/6)),400-Round(50*Sin(Pi/6)),
      320+Round(50*Cos(Pi/6)),150-Round(50*Sin(Pi/6)));
 MoveTo(350,150);
 LineTo(450,150);
 LineTo(490+Round(100*Cos(Pi/6)),150-Round(100*Sin(Pi/6)));
 LineTo(320+Round(50*Cos(Pi/6)),150-Round(50*Sin(Pi/6)));
 LineTo(350,150);
 SetTextJustify(CenterText,TopText);
 OutTextXY(350,405,'A');
 OutTextXY(450,405,'B');
 SetTextJustify(LeftText,CenterText);
 OutTextXY(495+Round(100*Cos(Pi/6)),400-Round(100*Sin(Pi/6)),'C');
 OutTextXY(495+Round(100*Cos(Pi/6)),400-Round(100*Sin(Pi/6)+ZC),'C1');
 SetTextJustify(LeftText,BottomText);
 OutTextXY(325+Round(50*Cos(Pi/6)),395-Round(50*Sin(Pi/6)),'D');
 OutTextXY(325+Round(50*Cos(Pi/6)),394-Round(50*Sin(Pi/6)+ZD),'D1');
 ReadKey;
 CloseGraph;
END.
Миниатюры
prism_1.jpg  
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.