Форум программистов, компьютерный форум CyberForum.ru

Помогите совместить сплайн с безьиром - C++

Восстановить пароль Регистрация
 
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
04.10.2011, 21:05     Помогите совместить сплайн с безьиром #1
Здравствуйте! Я прогу написал, помогите создать ещё один пункт, в котором Безьир будет совмещатся со сплайном, деталь я в автокаде начертил, и перенёс её в Си, вот тока не знаю как совмещение сделать
C++
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
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
#include<math.h>
#include<iostream.h>
#include<dos.h>
#include<stdlib.h>
 
 
float x,y;
 
void Bezier(float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4)
{ float t,x,y,r;
  setlinestyle(0,0,1);
  setcolor(2);
  line(x1+200,400-y1,x2+200,400-y2);
  line(x2+200,400-y2,x3+200,400-y3);
  line(x3+200,400-y3,x4+200,400-y4);
  for(t=0;t<=1;t=t+0.001)
    {
    x=x1*pow((1-t),3)+3*x2*pow((1-t),2)*t+3*x3*(1-t)*t*t+x4*t*t*t;
    y=y1*pow((1-t),3)+3*y2*pow((1-t),2)*t+3*y3*(1-t)*t*t+y4*t*t*t;
    putpixel(x+200,400-y,10);
    delay(1);
    }
}
 
void Bsplain(float x1,float y1,float x2,float y2,float x3,float y3)
{ float t,x,y;
  setlinestyle(0,0,10);
  setcolor(10);
  line(200+x1,400-y1,200+x2,400-y2);
  line(200+x2,400-y2,200+x3,400-y3);
  for(t=0;t<=1;t=t+0.001)
    {
    x=(x3+x2)/2*t*t+2*(t-t*t)*x2+(x1+x2)/2*(t-1)*(t-1);
    y=(y3+y2)/2*t*t+2*(t-t*t)*y2+(y1+y2)/2*(t-1)*(t-1);
    putpixel(200+x,400-y,10);
    delay(1);
    }
}
 
void BB()
{ clrscr();
  cleardevice();
  setcolor (10);
  setlinestyle(0,0,1);
  line (301.2,229.5,301.2,234.3);
  line (301.2,234.3,311.2,234.3);
  line (311.2,234.3,311.2,229.5);
  arc (306.2,213.3,-72,253,17);
  arc (306,213,105,180,90);
  Bezier(82.2,273.5,98.3,277.8,124.6,274.5,144.2,263.2);
  Bezier(144.2,263.2,148.6,260.6,165.3,242.6,171.5,231.8);
  Bezier(171.5,231.8,178.1,221.7,186.7,198,188.2,183.5);
  Bezier(188.2,183.5,189.7,169.4,184.5,143,175.6,133.6);
  Bezier(175.6,133.6,168,125.6,149,120.2,132.8,125.7);
  Bezier(132.8,125.7,122.2,129.5,105.1,123.2,99.9,115.5);
  Bezier(99.9,115.5,96.4,110.2,80.4,104.1,71.1,106.5);
  Bezier(71.1,106.5,62.4,108.8,53.2,124.4,53.2,131.2);
  Bezier(53.2,131.2,53.2,136,44.6,150.5,32.1,161.6);
  Bezier(32.1,161.6,21.9,170.7,16.2,182.9,16.2,186.7);
  getch();
 
}
 
void BS()
{ clrscr();
  cleardevice();
  setcolor (10);
  setlinestyle(0,0,1);
  line (301.2,229.5,301.2,234.3);
  line (301.2,234.3,311.2,234.3);
  line (311.2,234.3,311.2,229.5);
  arc (306.2,213.3,-72,253,17);
  arc (306,213,105,180,90);
  Bsplain(82.2,273.5,121.3,284,151.2,256.7);
  Bsplain(151.2,256.7,179.4,230.2,186.7,194.3);
  Bsplain(186.7,194.3,192.9,165,179.4,138);
  Bsplain(179.4,138,166.9,115.6,133.7,125.2);
  Bsplain(133.7,125.2,110.7,131.9,100.7,116.6);
  Bsplain(100.7,116.6,92.1,105.5,75.4,105.5);
  Bsplain(75.4,105.5,69.5,105.6,59.8,113.9);
  Bsplain(59.8,113.9,53.2,144.5,35.8,157.8);
  Bsplain(35.8,157.8,16.2,172.8,16.2,186.7);
  getch();
 
}
void main()
{ int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver, &gmode, "");
  char ch;
  while(!0)
    {
    clrscr();
    cleardevice();
    cout<<"                           Laboratornaya rabota N4\n"<<endl;
    cout<<"1 - Bezier 3 poriadka\n2 - B-splain 2 poriadka\nEsc - Exit\n";
    ch=getch();
    switch(ch)
      {
      case '1': BB(); break;
      case '2': BS(); break;
      case  27: exit(0);
      }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2011, 21:05     Помогите совместить сплайн с безьиром
Посмотрите здесь:

Совместить тетраэдры. C++
как наложить на кривую безье сплайн C++
Совместить два цикла C++
C++ Нужно совместить два кода
C++ Кубический сплайн
C++ Кубический сплайн
Построить интерполяционный кубический сплайн C++
Как совместить wxWidgets 3.0.2 и MVS 2013 Ultimate C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru