Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > графика в Турбо С


Автор: Гость_Инна 19.2.2005, 18:58
Подскажите, пожалуйста, как в Turbo C нарисовать 40 стрелок(последовательно уменьшающихся), летящих по спирали. Если можно приведите пример.

Автор: setq 19.2.2005, 20:09
какие свои мысли есть? в чём _именно_ проблема?

Автор: Гость_Инна 19.2.2005, 20:47
Я начала писать прогу, вот исходник:
#include <stdio.h>
#include "grasptc0.h"
#include "math.h"

float x[4]={5.0,5.0,4.9,5.1};
float y[4]={1.75,2.25,2.0,2.0};

void main()
{
int i,j;
float pi,phi,cos_phi,sin_phi,xx,yy;
pi=4.0*atan(1.0);
phi=2*pi/180;
cos_phi=cos(phi);
sin_phi=sin(phi);
initgr();
for (i=1;i<=5;i++){
for (j=0;j<4;j++){
xx=x[j]; yy=y[j];
x[j]=(xx)*cos_phi-(yy)*sin_phi;
y[j]=(xx)*sin_phi+(yy)*cos_phi;
}
move (x[0],y[0]);
for(j=1;j<=3;j++)
draw(x[j],y[j]);
draw(x[1],y[1]);

phi+=1*pi/180;
cos_phi=cos(phi);
sin_phi=sin(phi);


}
endgr();
}

Как видите рисует она мягко говоря не совсем то... Кроме того я не знаю как верно применить здесь формулу спирали.. Помогите!

Автор: Гость_Инна 20.2.2005, 18:13
Неужели никто не знает как это сделать?

Автор: setq 20.2.2005, 21:45
нет turboC под рукой;
боюсь, что я не знаю библиотеки grasptc0.h;
что такое последовательно уменьшающиеся и летящие по спирали стрелочки я представить в принципе могу, но представить смутно;

поэтому ограничусь двумя общими советами:
1) в разделе алгоритмы (это здесь же на форуме) podval выложил довольно неплохую коллекцию ссылок на алгоритмические сайты. инфу по спиралям и др. абстракциям советую уточнить там
2) иногда бывает очень полезно, когда есть функция, кот. рисует нужный тебе (как это называется?...) графический примитив. ну например - код, который рисует стрелочку, оформляешь как подпрограмму с параметрами (там... начало, направление, длина и т.п). следствие - вырастает читабельность кода, легче писать и тестировать программу.

извини, в голове собственная домашка по программированию. надо для графа реализовать алгоритм дейкстры...

Автор: chaos 21.2.2005, 11:19
вот тебе не совсем наглядный пример построения спирали, думаю доделаешь сам ))
Код

#define ESC 0x011b
#define N 30
#define R 50


void drawSpiro()
{
 float x,y,z;
 for (float r=0; r < N*M_PI; r+= 0.2)
 {
   x = R*cos(r) - R*sin(r);
   y = R*sin(r) + R*cos(r);
   z+= 0.1;
   putpixel(x+100,z-y+100,4);
 }
}
......

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)