Конструирование одномерных объектов
Построение конического сечения. Симметричный относительно вертикальной оси профиль сечения детали, состоящей из двух коник. Коническое сечение гладкого перехода от квадратного сечения к круглому. Кривые в полярных координатах. Семейства кривых (узоры).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 19.03.2009 |
Размер файла | 347,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Отчет о лабораторной работе №2
КОНСТРУИРОВАНИЕ ОДНОМЕРНЫХ ОБЪЕКТОВ
Коника
Построить коническое сечение:
1. Симметричный относительно вертикальной оси профиль сечения детали, состоящей из двух коник. Первая определяется точками: C(-40;0), D(-20;-80), E(0;100) и касательными, параллельными осям координат. Вторая - точками C(-40;0), B(-20;-30), A(0,-40) и касательными, параллельными осям координат.
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
int driver,mode,i;
float t1,t2,l,m,f,x,y,cx,cy,dx,dy,ex,ey,ax,ay,bx,by;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225);
line(630,225,625,220);
line(630,225,625,230);
line(300,0,300,450);
line(300,0,295,5);
line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
cx=-40;
cy=0;
dx=-30;
dy=60;
ex=0;
ey=100;
t1=dx+40;
t2=dy-100;
l=2.5*dx-dy+100;
m=t1*t2/(t1*t2-l*l);
for(x=cx;x<=ex;x=x+0.01)
{
for(y=cy;y<=ey;y=y+0.01)
{
f=(1-m)*(x+40)*(y-100)+m*(2.5*x-y+100)*(2.5*x-y+100);
if(f>=-0.1 && f<=0.1)
{
putpixel(300+x,225-y,YELLOW);
putpixel(300-x,225-y,YELLOW);
}
}
}
cx=-40;
cy=0;
bx=-30;
by=-35;
ax=0;
ay=-40;
t1=bx+40;
t2=by+40;
l=bx+by+40;
m=t1*t2/(t1*t2-l*l);
for(x=cx;x<=ax;x=x+0.01)
{
for(y=cy;y>=ay;y=y-0.01)
{
f=(1-m)*(x+40)*(y+40)+m*(x+y+40)*(x+y+40);
if(f>=-0.1 && f<=0.1)
{
putpixel(300+x,225-y,YELLOW);
putpixel(300-x,225-y,YELLOW);
} }
}
getch();
}
Результат выполнения:
2. Коническое сечение гладкого перехода от квадратного сечения к круглому. Интервал изменения м взять равным 0.2.
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
int driver,mode,i;
float m,f,x,y,ax,ay,bx,by;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
ax=100; ay=0; bx=0; by=100;
for(m=-0.000002;m>=-0.03;m=m*3)
for(x=bx;x<=ax;x=x+0.05)
{
for(y=ay;y<=by;y=y+0.05)
{
f=(1-m)*(x-100)*(y-100)+m*(x+y+100)*(x+y+100);
if(f>=-1 && f<=1) putpixel(300+x,225-y,YELLOW);
}
}
getch();
}
Результат выполнения:
3. Проходящее через точки A(0;0), B(1;0), C(1;1), D(0;1), E(1.5;0.5). Определить вид этого сечения.
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
int driver,mode,i;
float t1,t2,l,m,f,x,y,ax,ay,bx,by,cx,cy,dx,dy,ex,ey;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
ax=0;
ay=0;
ex=150;
ey=50;
dx=-50;
dy=50;
t1=ax+50;
t2=ax-150;
l=(dx-ex)*ay-(dy-ey)*ax+ey*(ex-dx)-ex*(ey-dy);
m=t1*t2/(t1*t2-l*l);
for(x=150;x>=0;x=x-0.05)
{
for(y=150;y>=-50;y=y-0.05)
{
f=(1-m)*(x-150)*(x+50)+m*((dx-ex)*y-(dy-ey)*x+ey*(ex-dx)-ex*(ey-dy))\
*((dx-ex)*y-(dy-ey)*x+ey*(ex-dx)-ex*(ey-dy));
if(f>=-0.1 && f<=0.1) putpixel(300+x,225-y,WHITE);
}
}
getch();
}
Результат выполнения:
Вывод: По всей видимости конус рассекается плоскостью через основание под углом. Вид сечения - парабола.
Кривые в полярных координатах
Уравнение кривой в полярной системе координат имеет вид:
с=R(ц)
где с - расстояние до начала координат, ц - угол отклонения от горизонтальной оси, R - произвольная функция действительного аргумента, которая определяет вил кривой. Зависимость между с и ц может быть и нефункциональной, тогда ее можно задать неявно (F(с, ц)=0) или системой параметрических уравнений (с=с(t), ц=ц(t)). Переход к декартовой системе осуществляется преобразованием:
X=с*cos(ц)
Y=с*sin(ц)
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
long int driver,mode,i; float x,y,pi,fi,alfa;
driver=DETECT; mode=0; initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
pi=3.14;
for(alfa=0;alfa<=31;alfa=alfa+1)
{
for(fi=0;fi<=2*pi;fi=fi+0.0001)
{
x=(tan(fi+alfa/10)-alfa*10)*sin(fi); y=(tan(fi+alfa/10)-alfa*10)*cos(fi);
putpixel(300+x,225-y,YELLOW);
}
}
getch();
}
Результат выполнения:
Семейства кривых (узоры)
Построить для различных значений параметров кривые, описываемые уравнениями:
1. с = a *(5 + 2*Cos(ц) + 3*Cos(цm)Sign(Cos(ц ))) - b*(Sin(18*ц))2*Cos(ц/2))8
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
long int driver,mode,i;
float a,b,x,y,m,pi,fi,p;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
pi=3.14; m=10; a=5; b=100;
for(fi=0;fi<=4*pi;fi=fi+0.00001)
{
p=a*(5+2*cos(fi)+3*cos(pow(fi,m))*sin(cos(fi)))\
-b*pow(sin(18*fi),2)*pow(cos(fi/2),8);
y=p*cos(fi); x=p*sin(fi);
putpixel(300+x*3,225-y*3,YELLOW);
}
getch();
}
Результат выполнения:
2.Используя уравнения:
с = a * Cos(4*t) + b
ц = t - c*Sin(4 + t)
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
long int driver,mode,i;
float a,b,c,x,y,t,fi,pi,p;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
pi=3.14;
a=15;
b=5;
c=5;
for(t=0;t<=2*pi;t=t+0.001)
{
p=a*cos(4*t)+b;
fi=t-c*sin(4+t);
x=p*cos(fi);
y=p*sin(fi);
putpixel(300+x*10,225-y*10,YELLOW);
}
getch();
}
Результат выполнения:
3. Используя уравнение:
с = a*(1 + Cos(3*ц) + b*Sin(3*ц))2
Текст программы:
#include<stdio.h>
#include<graphics.h>
#include<math.h>
main()
{
long int driver,mode,i;
float a,b,p,x,y,m,pi,fi;
driver=DETECT;
mode=0;
initgraph(&driver,&mode,"d:\\tc\\bgi");
line(0,225,630,225); line(630,225,625,220); line(630,225,625,230);
line(300,0,300,450); line(300,0,295,5); line(300,0,305,5);
for(i=0;i<=300;i=i+10) line(300+i,225,300+i,223);
for(i=0;i<=300;i=i+10) line(300-i,225,300-i,227);
for(i=0;i<=200;i=i+10) line(300,225-i,302,225-i);
for(i=0;i<=200;i=i+10) line(300,225+i,298,225+i);
a=7;
b=7;
pi=3.14;
for(fi=0;fi<=2*pi;fi=fi+0.001)
{
p=a*pow(cos(3*fi),2)+b*sin(3*fi);
x=p*cos(fi);
y=p*sin(fi);
putpixel(300+x*20,225-y*20,YELLOW);
}
getch();
}
Результат выполнения:
Подобные документы
Создание программы в среде программирования MatLab для решения задачи одномерной оптимизации (нахождение минимума и максимума заданных функций) методом золотого сечения, построение блок-схемы алгоритма и графическое изображение исследованных функций.
реферат [112,0 K], добавлен 14.06.2010Исследование особенностей создания математической модели и её дальнейшего решения в пакете MathCAD. Характеристика предметного и абстрактного моделирования технических объектов. Построение графика максимального прогиба балки и угла поворота сечения.
курсовая работа [610,5 K], добавлен 11.12.2012Разработка программы-приложения для создания композиции кривых второго порядка в полярных координатах. Описание используемых констант, переменных, компонентов, процедур и функций. Источники входной и выходной информации. Требования к программе и системе.
реферат [125,2 K], добавлен 28.05.2014Понятие и основные свойства точки, определение ее места в пространстве. Алгоритм построения сечения пространственных тел. Способы визуализации трехмерного пространства. Создание компьютерного приложения для проектирования в трехмерном пространстве.
курсовая работа [636,0 K], добавлен 04.02.2010Исследование прогибов балки при различных значениях силы. Построение графиков зависимостей в одних осях координат. Математическая модель решения с использованием теоремы Кастильяно. Вычисление интеграла методом трапеций. Алгоритм и текст программы.
контрольная работа [74,1 K], добавлен 08.03.2013Решения алгебраических уравнений методом выделения корней. Аппроксимация функций методом наименьших квадратов; дихотомия, бисекция. Одномерная оптимизация многоэкстремальных функций; метод золотого сечения. Многомерная оптимизация градиентным методом.
курсовая работа [956,7 K], добавлен 04.03.2013Объёмные геометрические объекты и построение линии их пересечения. Выработка практических навыков в разработке и отладке программ. Содержание программы и результат ее выполнения. Методы конструирования кривых. Аппроксимация кривой методом Фергюсона.
контрольная работа [239,7 K], добавлен 15.01.2009Классификация задач нелинейного программирования. Сущность методов безусловной одномерной оптимизации. Построение алгоритма случайного поиска, правило исключения интервалов. Понятие золотого сечения и квадратичной аппроксимации, метод хорд и касательных.
презентация [377,0 K], добавлен 30.10.2013Характеристика программы для реализации проектов, созданных в формате трехмерного моделирования. Классификация кривых 2-го порядка. Построение окружности, эллипса, гиперболы и параболы в системе координат с помощью программного обеспечения 3D MAX.
контрольная работа [667,7 K], добавлен 18.01.2014Определение минимума функции на заданном отрезке методами перебора, поразрядного поиска, дихотомии, золотого сечения и методом парабол. Нахождение и расчет нулей функции методом Ньютона. Построение графика данной функции, ее минимальное значение.
реферат [55,6 K], добавлен 09.04.2013