Перейти к содержимому

Фото
- - - - -

Помогите пожалуйста с кодом Java


  • Вы не можете создать новую тему
  • Please log in to reply
4 ответов в этой теме

#1 exception007

exception007
  • Пользователь
  • 27 сообщений

Отправлено 25 марта 2009 - 14:44

Проблема такая: Надо сделать так, чтобы при уеличении окошка, рисунок увеличивался, а при уменьшении окошка, рисунок становился меньше.
Добавили мне новую переменную double s = 2.2; и в выражении самом умножили на неё


import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class test extends Applet {
	public void paint(Graphics g) {
		
		double t;
		double step = 0.125;
		double PI = Math.PI/2;

			// Kysime laiuse, ko~rguse
			int width = getWidth();
			int height = getHeight();

			int x1 = 0; 
			int y1 = 0;
			double s = 2.2; // arvuta akna suuruse jargi. lyhem kylg / 200
			
			// Katame tausta
			g.setColor(Color.gray);
			g.fillRect(0, 0, width, height);
			
			// Joonistame
			g.setColor(Color.black);

			for (t = 10; t >= -10; t = t - step, step = step * 1.01) {
				
			int x = (int)(100 * s * (Math.sin(t/2 * PI)) * Math.cos(t/10 * PI) + width/2);
			int y = (int)(100 * s * (Math.sin(t/2 * PI)) * Math.sin(t/10 * PI) + height/2);
				
				if (t != 10) {
					g.drawLine(x1, y1, x, y);
				}
					
					
				x1 = x;
				y1 = y;
			}
	}
}


  • 0

#2 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 26 марта 2009 - 12:43

1. Возьми 2.2 за начальный коэфициент (дефальтовый размер окна)...
2. Поптом вычисляй текущий "c" коэфициент взависимости от новых размеров окна (формула пропорций).
3. умножай выходную линию на отношение коэфициентов.
g.drawLine( x1 * ( (double)c /2.2)  , y1 ( (double)c /2.2) , x ( (double)c /2.2) , y ( (double)c /2.2) );

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#3 Arkiz

Arkiz
  • Новобранец
  • 2 сообщений

Отправлено 26 марта 2009 - 12:47

Тоже данная тема интересна, но почему-то у меня не заработало, ТС, что вы скажите?
  • 0

#4 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 26 марта 2009 - 12:52

Ребята это тривиальная задача ... если так не можете ... то прифигачте завязку на height и width с таким же отношением (c/2.2) ... а в драве оставьте как було ... и будет вас счатье.

PS! второй вариант кстати даже будет правильнее :)
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#5 exception007

exception007
  • Пользователь
  • 27 сообщений

Отправлено 26 марта 2009 - 13:49

Ребята это тривиальная задача ... если так не можете ... то прифигачте завязку на height и width с таким же отношением (c/2.2) ... а в драве оставьте как було ... и будет вас счатье.

PS! второй вариант кстати даже будет правильнее :)

Вот вчера поэкспериментировал, вместо 100 поставил width/5 т.е. отступ от боков окна... вроде получилось:
   .........

 for (t = 10; t >= -10; t = t - step, step = step * 1.01) {
				
   int x = (int)(width/5 * s * (Math.sin(t/2 * PI)) * Math.cos(t/10 * PI) + width/2);
   int y = (int)(height/5 * s * (Math.sin(t/2 * PI)) * Math.sin(t/10 * PI) + height/2);

   ..........

  • 0