• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

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

  • Автор темы Автор темы ramp
  • Дата начала Дата начала

ramp

Ученик
Регистрация
4 Июн 2011
Сообщения
2
Реакции
0
Баллы
0
В прямой четырехугольной призме провести сечение, проходящее через сторону нижнего ос

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

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

Нужно само построение.
 
Однако. Я могу это реализовать, но не за "спасибо", к сожалению.
Наукоемкое это дело - сечения корректно строить.
 
Последнее редактирование:
Вот реализация построения сечения в цилиндре http://www.tehnari.ru/f41/t52366/, для построения сечения в призме можете им воспользоваться :)
 
прямой четырехугольной призме
Прямой призмой называется призма, у которой боковое ребро перпендикулярно плоскости основания, значит, углы при основании = 90 градусам. Судя по названию - в основании лежит четырехугольник.
Так как вы явно не указали, что именно лежит в основании, пойдем по пути наименьшего сопротивления, будем считать, что в основании лежит паралелограмм.
сечение, проходящее через сторону нижнего основания
в данном случае сечением будет выступать четырехугольник, одна сторона которого будет лежать на стороне нижнего основания, проивоположная сторона будет получена путем поворота плоскости нижнего основания на угол 30 градусов. Одним из свойств поворота является сохранения количества углов, следовательно сечение также будет являться четырехугольником. На экране его можно нарисовать как фигуру из 4 линий. Вам останется только явно указать длину сторон основания, ребра и произвести нехитрые вычисления координат вершин этой фигуры :))
Дерзайте, учебник геометрии вам в помощь!
 
значит, все углы = 90 градусам, рассматриваемая фигура - прямоугольный параллелепипед
Неверно!

В основании прямой четырехугодной призмы может лежать хоть трапеция, так что это не параллелепипед.
 
Виноват, осознал, принял к сведению, исправил, так пойдёт? :)
 
Ну, вообще-то, ежели без аксонометрии, то не так уж это и сложно. На верхнем рисунке изображен произвольный прямоугольник, лежащий в основании призмы. Пусть секущая плоскость проходит через ребро АВ. Систему координат 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(..);{[COLOR=Red]ПАРАМЕТРЫ ФУНКЦИИ ПОДСТАВЬТЕ САМИ[/COLOR]}   
 
 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.webp
    Prism.webp
    7.4 KB · Просмотры: 249
Впрочем, ладно - так уж и быть. Можно и с аксонометрией. Только вот не знаю, будет ли в том толк - подобные программы надо писать самому. Это куда легче, чем в чужих разбираться.
Код:
Uses Graph, CRT;
VAR
 ZD,ZC:Real;

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

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

 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.webp
    Prism_1.webp
    14.5 KB · Просмотры: 255
Назад
Сверху