одна ТОЧЕЧНАЯ графика

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

одна ТОЧЕЧНАЯ графика

Сообщение Akella » 19.04.2005 (Вт) 16:53

И снова ЗДОРОВА жители форума, ВЕЧЕР, настроение ОТЛИЧНОЕ, :) :) вот у меня такой вопрос :
Надо расположить N-ное (заданное) количество точек (3 ~ 60) расположить по кругу на равном расстоянии от центра , и что бы они

могли менять это расстояние и поворачивалься относительно центра?
написал:
Код: Выделить всё
Private Sub Form_Load()

Dim CenterX, CenterY As Integer
Dim tr As Integer
Dim sX, sY As Integer

'pic- Picturebox
pic.autoredraw=true
Dim i2 As Long
CenterX = Pic.ScaleWidth \ 2
CenterY = Pic.ScaleHeight \ 2
tr = (2 * 3.14 * 30) \ 180

Pic.Line (0, CenterY)-(Pic.ScaleWidth, CenterY)
Pic.Line (CenterX, 0)-(CenterX, Pic.ScaleHeight)
Pic.DrawWidth = 3
For i = 1 To 20
'sY = Cos(360 / (i + 1)) ' + 360 / (i + 1)
'sX = Sin(360 / (i + 1)) '+ 360 / (i + 1)
i2 = ((360 * (i)) / 2 * 3.14) '- 1.57  '* Step)
'i2 = (2 * 3.14 * (360 / i)) / 360
x1 = Sin(i2)
y1 = Cos(i2)

c = 30

t(i).x1 = CenterX + i
t(i).y1 = CenterY + i
Pic.PSet ((CenterX + x1 * c), (CenterY + y1 * c))  '(t(i).x1 + sX, t(i).y1 + sY)
Next
Pic.Refresh
End Sub
но они распологаются НЕРАВНОМЕРНО, ПОМОГИТЕ.
Не бойся что не знаешь, бойся что не учишься.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.04.2005 (Вт) 17:31

Код: Выделить всё
Option Explicit

Private Sub Poly(ByVal numVerts As Long, ByVal sizeFactor As Long, Optional ByVal rotateGrad As Long = 0)
  Dim i As Long, tmp As Double, curgr As Double
 
  tmp = 2 * 3.1415926536 / numVerts
  curgr = -tmp + rotateGrad * 3.1415926536 / 180
  For i = 1 To numVerts
    curgr = curgr + tmp
    Me.PSet (Cos(curgr) * sizeFactor + sizeFactor, Sin(curgr) * sizeFactor + sizeFactor), vbRed
  Next
End Sub

Private Sub Form_Load()
  Me.ScaleMode = vbPixels
  Me.Width = Me.ScaleX(460, vbPixels, vbTwips)
  Me.Height = Me.ScaleX(500, vbPixels, vbTwips)
  Me.DrawWidth = 5
End Sub

Private Sub Timer1_Timer()
  Static rot As Long
  rot = rot + 1
  Me.Cls
  Poly 15, 200, rot
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 19.04.2005 (Вт) 17:50

У-у-у, как всё запущенно... Можешь вот так попробовать, авось попустит :wink:
Код: Выделить всё

Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Const 2pi=6.283185307179586476925286766559
Const n As Byte=7 'число вершин
Dim x(0 to n-1) As Double, y(0 to n-1) As Double 'вообще-то без этого массива можно обойтись, но в целях повышения быстродействия...
Dim R As Double, Alpha As Double 'R - расстояние от точки до центра, Alpha - фаза поворота
Dim ca As Double, sa As Double, t as Double
Dim xc As Integer, yc As Integer 'координаты центра
For i=0 to n-1
x(i)=Cos(2pi*i/n)
y(i)=Sin(2pi*i/n)
Next i
'Теперича отрисовка:
R=Rnd*100
xc=CInt(Me.ScaleWidth/2)
yc=CInt(Me.ScaleHeight/2)
t=timeGetTime/1000
Do
Alpha=timeGetTime/1000 'угловая скорость 1 рад/с
ca=Cos(alpha)
sa=Sin(alpha)
Me.Cls 'ну, здесь по желанию - я бы просто поточечно затирал
For i=0 to n-1
Me.PSet (xc+ca*x(i)-sa*y(i),yc+ca*y(i)+sa*x(i))
Next i
DoEvents
Loop Until Alpha-t>10000

ЗЫ. Знал, знал что зря стараюсь...
Листинги не горят!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 18:39

Уверен, что ты его не проверял... У тебя syntax error во 2 строке.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 19:00

Он пробел забыл между Byte и =
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 19.04.2005 (Вт) 19:27

А это тут причем?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 19:39

Ну там написано as Byte=

А он не понимает что это такое "Byte="
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 19.04.2005 (Вт) 19:49

kirrun, вообще-то ВБ на константу 2pi ругается, ибо ее имя с цифры начинается … А вот с пробелом - проблема надуманная…
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

kirrun
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 06.04.2005 (Ср) 15:41
Откуда: Питер

Сообщение kirrun » 19.04.2005 (Вт) 20:05

ну мб мб...
"Единственный безопасный компьютер - это тот, который выключен из электросети, закрыт в сейфе, который зарыт 20 футов под землей в засекреченной местности. И то я не уверен относительно его безопасности."
(Деннис Хьюджес, ФБР)

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 19.04.2005 (Вт) 21:11

SHURUP писал(а):kirrun, вообще-то ВБ на константу 2pi ругается, ибо ее имя с цифры начинается … А вот с пробелом - проблема надуманная…

:oops:
Листинги не горят!

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 21.04.2005 (Чт) 17:10

Круто, спасибо :D
Не бойся что не знаешь, бойся что не учишься.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 130

    TopList