Одномерные объекты (кулачек)

Положение касательных линий в точках стыка дуг кривых. Плоский обвод из дуг кривых Bezier третьего порядка. Построение обвода, сохранение выпуклой оболочки для каждой из кривых. Использование В-сплайнов второго порядка. Графический редактор AutoCAD.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 19.03.2009
Размер файла 215,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Отчет о лабораторной работе №4

Одномерные объекты (кулачек)

По вариантам, в соответствии с заданием, в масштабе 1:1 построить замкнутую кривую (профиль кулачка).

Для выполнения работы предварительно построить профиль на листе чертежной бумаги в масштабе 1:1. Графически определить положения касательных в точках стыка дуг кривых.

Задание 1

Замкнутую кривую построить, как плоский обвод из дуг кривых Bezier третьего порядка. На исходных кривых взять по две дополнительные точки, в которых определить положение касательных. При построении обвода сохранить выпуклую оболочку для каждой из кривых.

Текст программы

#include<stdio.h>

#include<graphics.h>

#include<math.h>

#include<conio.h>

void main()

{

extern void bez(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4);

long int driver,mode,oper,i;

textcolor(2);

textbackground(15);

start: clrscr();

printf("Введите:\n\n");

printf("1 - кривая, как плоский обвод из дуг кривых Bezier 3-го порядка;\n");

printf("0 - - ВЫХОД ;\n\n");

printf("Ожидается выбор операции: ");

scanf("%ld",&oper);

printf("\n\n\n");

driver=DETECT;

mode=0;

initgraph(&driver,&mode,"C:\\TC\\BGI");

cleardevice();

setcolor(1);

if(oper==1)

{

bez(-85,0,-60,-60,0,-85,61,-51);

bez(61,-51,86,0,52,53,37,58);

bez(37,58,0,100,-27,92,-44,61);

bez(-44,61,-54,41,-75,20,-85,0);

}

getch();

closegraph();

goto start;

}

void bez(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)

{

float t,x,y;

line(300+x1*2,225-y1*2,300+x2*2,225-y2*2);

line(300+x2*2,225-y2*2,300+x3*2,225-y3*2);

line(300+x3*2,225-y3*2,300+x4*2,225-y4*2);

for(t=0;t<=1;t=t+0.00001)

{

x=pow((1-t),3)*x1+3*t*pow((1-t),2)*x2+3*pow(t,2)*(1-t)*x3+pow(t,3)*x4;

y=pow((1-t),3)*y1+3*t*pow((1-t),2)*y2+3*pow(t,2)*(1-t)*y3+pow(t,3)*y4;

putpixel(300+x*2,225-y*2,4);

}

return;

}

Результат выполнения:

Задание 2

Ту же самую кривую построить с использованием В-сплайнов второго порядка. На исходных кривых также взять по две дополнительные точки, в которых определить положение касательных. И при построении обвода сохранить выпуклую оболочку.

На каждом из участков обвод может быть описан уравнением

P(t) = P1(t) + P2(t) + P3(t),

где

P1(t) = 0,5 * (Pi + Pi-1) * t2,

P2(t) = 2 * (t-t2) * Pi-1,

P3(t) = 0,5 * (Pi-1 + Pi-2) * (t-1)2.

Параметр t для каждой дуги сплайна изменяется в пределах 0, ... , 1. Компонентами вектора Р являются декартовы координаты (x, y) точек кривой.

Текст программы:

#include<stdio.h>

#include<graphics.h>

#include<math.h>

#include<conio.h>

void main()

{

extern void bsplain(float x1,float y1,float x2,float y2,float x3,float y3);

long int driver,mode,oper,i;

textcolor(2);

textbackground(15);

start: clrscr();

printf("Введите:\n\n");

printf("0 - - ВЫХОД ;\n\n");

printf("Ожидается выбор операции: ");

scanf("%ld",&oper);

printf("\n\n\n");

driver=DETECT;

mode=0;

initgraph(&driver,&mode,"C:\\TC\\BGI");

cleardevice();

setcolor(1);

if(oper==2)

{ {

bsplain(-85,0,-77,-34,-60,-58);

bsplain(-60,-58,-43,-74,0,-85);

bsplain(0,-85,30,-71,61,-51);

bsplain(61,-51,86,0,52,53);

bsplain(52,53,37,58,0,97);

bsplain(0,97,-27,92,-44,61);

bsplain(-44,61,-49,50,-64,30);

bsplain(-64,30,-82,10,-85,0);

}

getch();

closegraph();

goto start;

}

void bsplain(float x1,float y1,float x2,float y2,float x3,float y3)

{

float t,x,y;

line(300+x1*2,225-y1*2,300+x2*2,225-y2*2);

line(300+x2*2,225-y2*2,300+x3*2,225-y3*2);

x1=(x1-x2)+x1; y1=(y1-y2)+y1;

x3=(x3-x2)+x3; y3=(y3-y2)+y3;

for(t=0.01;t<=0.99;t=t+0.001)

{

x=(x1+x2)/2*(1-t)*(1-t)+2*x2*(1-t)*t+(x2+x3)/2*t*t;

y=(y1+y2)/2*(1-t)*(1-t)+2*y2*(1-t)*t+(y2+y3)/2*t*t;

putpixel(300+x*2,225-y*2,4);

}

return;

}

Результат выполнения:

Задание 3

Ту же самую кривую построить в графическом редакторе AutoCAD.


Подобные документы

  • Характеристика программы для реализации проектов, созданных в формате трехмерного моделирования. Классификация кривых 2-го порядка. Построение окружности, эллипса, гиперболы и параболы в системе координат с помощью программного обеспечения 3D MAX.

    контрольная работа [667,7 K], добавлен 18.01.2014

  • Математическая модель построения кривых Безье с описанием реализации на языке Visual С++. Вычисление длины кривой. Условие непрерывности соседних кривых Безье, частные случаи. Структура программы, вызываемые функции. Описание основных алгоритмов.

    курсовая работа [405,3 K], добавлен 06.08.2013

  • Исследование элементов эллиптических кривых, необходимых для реализации криптографических протоколов. Изучение алгоритмов арифметики точек эллиптической кривой и способов генерации кривых для криптографических алгоритмов. Описание алгоритмов шифрования.

    курсовая работа [371,2 K], добавлен 07.08.2012

  • Разработка программы-приложения для создания композиции кривых второго порядка в полярных координатах. Описание используемых констант, переменных, компонентов, процедур и функций. Источники входной и выходной информации. Требования к программе и системе.

    реферат [125,2 K], добавлен 28.05.2014

  • Существующие методы нахождения графических примитивов и программных реализаций. Базовое преобразование Хафа: поиск прямых, выделение окружностей на изображении, нахождение кривых высшего порядка. Составление руководства программиста и пользователя.

    курсовая работа [2,7 M], добавлен 20.03.2012

  • Создание простейших рисунков, закраска объектов в CorelDraw. Работа с текстом в графических объектах в программе CorelDRAW. Использование кривых линий и ломаных. Упорядочивание, выравнивание и группировка объектов. Использование графических эффектов.

    практическая работа [1,5 M], добавлен 19.04.2012

  • Функции графического редактора Paint. Сохранение документов, вставка, перемещение, копирование, удаление. Многократное увеличение или уменьшение инструмента. Полная палитра, выбор третьего цвета для рисования, пипетка, заливка, пользовательская кисть.

    контрольная работа [22,3 K], добавлен 27.07.2009

  • Произвольные кривые. Узлы кривой. Создание кривых Безье. Возможные применения инструмента Безье. Редактирование фигур и кривых. Инструменты Knife (нож), Erase (ластик) и Free Transform (свободное преобразование).

    реферат [38,4 K], добавлен 21.12.2003

  • Объёмные геометрические объекты и построение линии их пересечения. Выработка практических навыков в разработке и отладке программ. Содержание программы и результат ее выполнения. Методы конструирования кривых. Аппроксимация кривой методом Фергюсона.

    контрольная работа [239,7 K], добавлен 15.01.2009

  • Способы создания и редактирования контуров с использованием инструментария графического редактора CorelDRAW. Точное построение и вычерчивание кривых, преобразование типов узлов, преобразование линии в кривую, разрезание и произвольное искажение контура.

    контрольная работа [47,8 K], добавлен 02.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.