Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
 Аватар для Gothic Angelos
1 / 1 / 1
Регистрация: 29.05.2010
Сообщений: 153

Окружность из точек

10.02.2013, 15:12. Показов 5835. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Возник такой вопрос,каким образом можно построить окружность состоящую из набора точек,чтобы потом эти точки можно было изменять
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2013, 15:12
Ответы с готовыми решениями:

Проверить на попадание точек в окружность, на окружность, либо за её пределы
Ввести радиус окружности R с центром в начале координат. Ввести n точек, заданных координатами (x,y), которые проверить на попадание в...

Определить, сколько точек пересечения имеют прямая и окружность и найти координаты этих точек
Привет. Тут такое дело. В общем я неплохо знаю сам язык, но вот задачку решить не могу. Т.е не знаю как. С школьной математикой у меня...

Среди точек найти такую, чтобы окружность с центром в этой точке включала в себя наибольшее кол-во точек
Задача вроде простая... но с реализацией возникли трудности... еще раз задачу: Задано множество точек на плоскости. Найти такую из...

24
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
09.03.2013, 20:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Gothic Angelos Посмотреть сообщение
Есть мнение что
в коде вашем не только ногу можно сломать
если выкинуть из ваше кода все лишнее
Java
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
import javax.swing.*;
import java.awt.*;
 
public class MyFrame extends JFrame {
 
    int nphi = 200;
    double PI = 3.141592653589793;
    double a1 = 0;
    double a2 = 2 * PI;
    double phi = (int) ((a2 - a1) / nphi);
 
    public MyFrame() {
        setTitle("Главное окно");
        setSize(500, 400);
        MyPanel panel = new MyPanel();
        add(panel);
    }
 
    public static void main(String[] args) {
        MyFrame frame = new MyFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
 
    class MyPanel extends JPanel {
 
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
 
            double width = getWidth();
            double height = getHeight();
            int x = (int) (0.5 * width);
            int y = (int) (0.5 * height);
            double r = 0.75 * Math.min(x, y);
            double angle = 0;
 
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.RED);
 
            g2.setStroke(new BasicStroke(3f));
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
            for (int i = 0; i < nphi; i++) {
                x += r * Math.cos(angle);
                y += r * Math.sin(angle);
                r = Math.max(0.1 * r, 5);
                g2.drawLine(x, y, x, y);
                angle += 0.05;
            }
        }
    }
}
1
 Аватар для Gothic Angelos
1 / 1 / 1
Регистрация: 29.05.2010
Сообщений: 153
10.03.2013, 00:39  [ТС]
Если я всё правильно перенёс себе,трижды перепроверил,но результат работы программы
http://gyazo.com/a31ff1efe5841a8f162badfc3b5b6ef5
вот такие петли...
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
10.03.2013, 16:29
Если уж очень хочется вручную точки на офсете насчитать, то вот так можно:
Java
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
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D;
import java.awt.geom.Point2D;
import java.util.*;
import java.util.List;
 
public class EllipseOffset extends JComponent {
    private double a = 200;
    private double b = 100;
    private double delta = -80;
    private List<Point2D> offset;
 
    EllipseOffset() {
        offset = new ArrayList<Point2D>();
        updateOffset();
    }
 
    public double getDelta() {
        return delta;
    }
 
    public void setDelta(double delta) {
        this.delta = delta;
        updateOffset();
        repaint();
    }
 
    private void updateOffset() {
        offset.clear();
        int num = 100;
        for (int i = 0; i < num; i++) {
            double angle = Math.toRadians(360.0 * i / num);
            double cos = Math.cos(angle);
            double sin = Math.sin(angle);
            double x = a * cos;
            double y = b * sin;
            double dx = -a * sin;
            double dy = b * cos;
            double d = Math.hypot(dx, dy);
            double px = x + delta * dy / d;
            double py = y - delta * dx / d;
            offset.add(new Point2D.Double(px, py));
        }
    }
 
    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.white);
        int width = getWidth();
        int height = getHeight();
        g2d.fillRect(0, 0, width, height);
        double cx = 0.5 * width;
        double cy = 0.5 * height;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
                            RenderingHints.VALUE_STROKE_PURE);
        g2d.setColor(Color.red);
        g2d.setStroke(new BasicStroke(1.5f));
        g2d.draw(new Ellipse2D.Double(cx - a, cy - b, 2 * a, 2 * b));
        Path2D path = new Path2D.Double();
        Iterator<Point2D> iter = offset.iterator();
        Point2D p = iter.next();
        path.moveTo(cx + p.getX(), cy + p.getY());
        while (iter.hasNext()) {
            p = iter.next();
            path.lineTo(cx + p.getX(), cy + p.getY());
        }
        path.closePath();
        g2d.setColor(Color.black);
        g2d.setStroke(new BasicStroke(0.75f));
        g2d.draw(path);
    }
 
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Ellipse Offset");
                createComponents(frame);
                frame.setSize(600, 400);
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
 
    private static void createComponents(JFrame frame) {
        final EllipseOffset comp = new EllipseOffset();
        int value = (int) comp.getDelta();
        final JSlider slider = new JSlider(JSlider.HORIZONTAL, -150, 50, value);
        frame.getContentPane().add(slider, BorderLayout.NORTH);
        frame.getContentPane().add(comp, BorderLayout.CENTER);
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                comp.setDelta(slider.getValue());
            }
        });
    }
}
0
 Аватар для Gothic Angelos
1 / 1 / 1
Регистрация: 29.05.2010
Сообщений: 153
10.03.2013, 17:18  [ТС]
У меня почему-то пустое окно, возможно чтото с панелью
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
11.03.2013, 08:20
Цитата Сообщение от Gothic Angelos Посмотреть сообщение
У меня почему-то пустое окно, возможно чтото с панелью
Все работает как и задумано:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)
 
>dir
 Volume in drive C is System
 Volume Serial Number is 1EA1-57E1
 
 Directory of ...
 
11.03.2013  11:16    <DIR>          .
11.03.2013  11:16    <DIR>          ..
11.03.2013  11:13             3*601 EllipseOffset.java
               1 File(s)          3*601 bytes
               2 Dir(s)  14*376*177*664 bytes free
 
>javac EllipseOffset.java
 
 
>java EllipseOffset
Миниатюры
Окружность из точек  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2013, 08:20

Подсчет точек, попадающих в окружность
Добрый день, помогите пожалуйста дополнить код. Условие Ввести радиус окружности R с центром в начале координат. Ввести n точек,...

Определить вхождение точек в окружность
Дано:) На карте(рисунке) есть дома и есть главное управление с некоторым радиусом влияния. Задача: Необходимо определить, какие дома...

На плоскости заданы окружность и множество точек
На плоскости заданы окружность и множество точек. Сколько прямых коснется окружности и пересечет ее из всех прямых, которые можно...

Координаты точек треугольника вписанного в окружность
Собственно дана окружность, известен её радиус, как найти координаты точек вписанного в окружность равностороннего и равнобедренного...

Проверить попадание случайных и заданых пользователем точек в окружность?
Существует массив, он заполнен случайными точками. Но хотелось бы реализовать, чтобы пользователь мог дополнительно ввести свою собственную...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru