1 Востаннє редагувалося kovalchukhalia (14.02.2014 22:31:52)

Тема: Еліпс

Привіт...виникла проблема..не знаю як вирішити....
Суть і тому, що я хочу розмістити еліпс під певним кутом, а де вказати кут нахилу не знаю...
Як це зробити??? Допоможіть будь ласка)))

package Elips;
import java.awt.Graphics;
import java.applet.*;
public class DrawOval extends Applet{
    public void paint(Graphics g){
        for(int i=0; i<140; i+=20)
            g.drawOval(i,5,15,45);
        
    }
}

2

Re: Еліпс

По-перше, приберіть "важливо". Воно важливо для вас, але не для решти форуму; і дехто, хто б міг допомогти, буде ображеним, що його увагу привертають таким дешевим способом, і не відповість.
По-друге, стандартних засобів для нахилених еліпсів немає. Як саме його будувати - залежить від завдання, яке вам треба зробити; що для вас цінніше - власний час, час комп'ютера, точність малюнка? Чи краще буде витратити три доби на функцію, яка буде малювати нахилений еліпс, як прямий, чи тридцять хвилин на косий-кривий, що витрачатиме 0,1с часу процесору? В другому разі вам треба записати рівняння еліпсу в перетвореній системі координат (власне, це вам в будь-якому разі буде потрібно), а потім робити в циклі drawLine від однієї точки еліпсу до наступної для, скажімо, 2000 точок.

Подякували: kovalchukhalia1

3

Re: Еліпс

ну наприклад таке...просто я новичок в Java.... і цікаво

Post's attachments

Без імені.png 5.46 kb, 226 downloads since 2014-02-14 

4

Re: Еліпс

Та я розумію, але тут, безвідносно до мови, у нас є рівняння одиничного кола в "ідеальних" координатах
x^2 + y^2 = 1
і рівняння нашого нахиленого еліпсу в реальних координатах
(a1 * x + a2 * y + a3)^2 + (b1 * x + b2 * y + b3)^2 = 1
(якщо хочете, доведу, але повірте на слово - так і є). Питання тільки в тому, як знайти коефіцієнти; в принципі, це не важко, але трохи муторно. Коли матимете формули - запрограмувати буде справою 5 хвилин.

Подякували: kovalchukhalia1

5 Востаннє редагувалося kovalchukhalia (15.02.2014 01:06:22)

Re: Еліпс

те що в мене вийшло...далі запутася

package test;

import java.awt.*; 
import java.awt.event.*; 
class TEST extends Frame{ 
TEST(String s){  
super(s); 
}
public void paint(Graphics g){ 
Dimension d = getSize(); 
int dx = d.width / 10, dy = d.height / 10; 

g.drawArc(d.width / 2 - dx, d.height - 3*dy / 2 - 5, 2*dx, dy-1, 0, 360); 
g.drawArc(d.width / 3- dx, d.height - 2*dy+4, 2*dx, dy - 2, 0, 360); 
  
} 
public static void main(String[] args){ 
TEST f = new TEST(" Приклад рисування"); 
f.setBounds(0, 0, 1000, 600); 
f.setVisible(true); 
f.addWindowListener(new WindowAdapter(){ 
public void windowClosing(WindowEvent ev){ 
System.exit(0); 
} 
}); 
} 
} 

6 Востаннє редагувалося koala (15.02.2014 07:57:00)

Re: Еліпс

Мені трохи дивно, що треба таке пояснювати... але хіба вас не вчили, що перед тим, як щось програмувати, треба продумати алгоритм?

7

Re: Еліпс

Ось вам матеріал(pdf), с. 15-17.

Подякували: leofun011