Маурер көтерілді - Maurer rose

Жылы геометрия, а тұжырымдамасы Маурер көтерілді Питер М.Маурер өзінің мақаласында таныстырды Раушан - раушан ...[1]. Маурер раушаны а нүктесінің кейбір нүктелерін байланыстыратын бірнеше сызықтардан тұрады раушан қисығы.


Маурер көтерілді n = 7 және г. = 29

Анықтама

Келіңіздер р = күнә () а Роза ішінде полярлық координаттар жүйесі, қайда n оң бүтін сан. Раушан бар n жапырақшалар, егер n тақ және 2n жапырақшалар, егер n тең.

Содан кейін раушан гүлінен 361 ұпай аламыз:

(күнә (nk), к) (к = 0, г., 2г., 3г., ..., 360г.),

қайда г. натурал сан, ал бұрыштары ішінде градус, емес радиан.

Түсіндіру

A Маурер көтерілді раушан гүлі р = күнә () жоғарыда көрсетілген 361 тармақты дәйекті байланыстыратын 360 жолдан тұрады. Осылайша, Маурер раушаны а көп бұрышты қисық бірге төбелер раушан гүлінде.

Маурер раушанын жабық маршрут ретінде сипаттауға болады полярлық жазықтық. Жаяу жүргінші шығу жолынан бастап (0, 0) бастап, сызық бойымен нүктеге дейін жүреді (sin (nd), г.). Содан кейін, сапардың екінші кезеңінде серуендеу сызық бойымен келесі нүктеге дейін жүреді, (sin (n·2г.), 2г.), және тағы басқа. Ақырында, саяхаттың соңғы кезеңінде серуендеу сызық бойымен жүреді (sin (n·359г.), 359г.) аяқталу нүктесіне, (sin (n·360г.), 360г.). Барлық маршрут - раушанның Маурер раушаны р = күнә (). Маурер раушаны - бұл жабық қисық бастапқы нүкте (0, 0) және аяқталу нүктесі болғандықтан, (sin (n·360г.), 360г.) сәйкес келеді.

Келесі суретте Маурер раушанының эволюциясы көрсетілген (n = 2, г. = 29°).

Maurer Rose.svg эволюциясы

Суреттер

Төменде n және d мәндері салынған бірнеше Маурер раушандары келтірілген:

Maurer roses.svg

Синтаксистік мысалдар

JavaScript коды

// Boilerplate, бір жерде болу керек, солай ма?құжат.дене.ішкіHTML = ''; // Мұны консольге жаңа қойындыға немесе шынымен кез келген жерге қойғыңыз келсе, оның парағының жолақтарын кесіп тастаңыз.const canv = құжат.createElement('кенеп');canv.ені = 800;canv.биіктігі = 800;құжат.дене.appendChild(canv);const ctx = canv.getContext('2d');// Жарайды, раушан уақыты.рұқсат етіңіз n = 6, г. = 71; // Бұл кез-келген тіркесім болуы мүмкін, бірақ бұл жақсы.ctx.аудару(canv.ені / 2, canv.биіктігі / 2);ctx.beginPath();ctx.lineWidth = 0.5;ctx.инсульт = «көк»;үшін (рұқсат етіңіз тета = 0; тета <= 360 / * біз дәрежелермен жұмыс жасаймыз, есіңізде ме? * /; тета++){    рұқсат етіңіз к = тета * г. * Математика.PI / 180;    рұқсат етіңіз р = 300 * Математика.күнә(n * к);    рұқсат етіңіз х = -р * Математика.cos(к);    рұқсат етіңіз ж = -р * Математика.күнә(к);    ctx.жол(х, ж);    ctx.жылжу(х, ж);}ctx.инсульт();ctx.beginPath();ctx.lineWidth = 4;ctx.инсульт = 'қызыл';үшін (рұқсат етіңіз тета = 0; тета <= 360; тета++){    рұқсат етіңіз к = тета * Математика.PI / 180;    рұқсат етіңіз р = 300 * Математика.күнә(n * к);    рұқсат етіңіз х = р * Математика.cos(к);    рұқсат етіңіз ж = -р * Математика.күнә(к);    ctx.жол(х, ж);    ctx.жылжу(х, ж);}ctx.инсульт();

Java коды

Мұны істеудің жақсы әдісі бар. Бірақ бұл Маурер раушанының суретін салатын бүкіл Java файлы.

импорт javax.swing. *;импорт java.awt. *;импорт java.awt.event. *;сынып Көрсеткіш ұзарады JPanel {    қорғалған жарамсыз бояу компоненті(Графика ж) {        Маурер.маурер.сурет салу((Графика2D) ж);    }}қоғамдық сынып Маурер құрал-саймандар ActionListener {    статикалық Маурер маурер;    статикалық ақтық int ені = 800, биіктігі = 800;    Көрсеткіш рендерер = жаңа Көрсеткіш();    статикалық екі есе n = 6, г. = 71;    қоғамдық Маурер() {        JFrame жақтау = жаңа JFrame(«мауре раушаны»);        жақтау.setSize(ені, биіктігі);        жақтау.қосу(рендерер);        жақтау.setDefaultCloseOperation(3);        жақтау.setResizable(жалған);        жақтау.setVisible(шын);        Таймер таймер = жаңа Таймер(0, бұл);        таймер.бастау();    }    қоғамдық жарамсыз әрекет Орындалды(ActionEvent evt) {        рендерер.қайта бояу();    }    қоғамдық жарамсыз сурет салу(Графика2D ж) {        ж.setRenderingHint(Ұсыныстар.KEY_ANTIALIASING, Ұсыныстар.VALUE_ANTIALIAS_ON);        ж.setColor(Түс.ақ);        ж.fillRect(0, 0, ені, биіктігі);        ж.setColor(жаңа Түс(0, 0, 255, 100));        ж.аудару(ені / 2, биіктігі / 2);        екі есе х = 0, ж = 0;        үшін (int тета = 0; тета <= 360; тета++) {            екі есе к = тета * г. * Математика.PI / 180;            екі есе р = 300 * Математика.күнә(n * к);            екі есе newX = р * Математика.cos(к);            екі есе жаңаY = р * Математика.күнә(к);            ж.сызық((int)х, (int)ж, (int)newX, (int)жаңаY);            х = newX;            ж = жаңаY;        }        ж.setColor(Түс.қызыл);        ж.setStroke(жаңа BasicStroke(4));        үшін (int тета = 0; тета <= 360; тета++) {            екі есе к = тета * Математика.PI / 180;            екі есе р = 300 * Математика.күнә(n * к);            екі есе newX = р * Математика.cos(к);            екі есе жаңаY = р * Математика.күнә(к);            ж.сызық((int)х, (int)ж, (int)newX, (int)жаңаY);            х = newX;            ж = жаңаY;        }    }    қоғамдық статикалық жарамсыз негізгі(Жол[] доға) {        маурер = жаңа Маурер();    }}

Visual Basic 6 коды

 n = 7; d = 29 Xo = 400 'Шығу тегі Yo = 350 pi = 22/7 DrawWidth = 1 Тета үшін = 0-ден 360 к = тета * d * pi / 180 r = 300 * Sin (n * k) x = Xo - r * Cos (k) y = Yo - r * Sin (k) Line - (x, y), QBColor (9) Next DrawWidth = 2 Theta = 0 To 360 k = theta * pi / 180 r = 300 * Sin (n) * k) x = Xo + r * Cos (k) y = Yo - r * Sin (k) Line - (x, y), QBColor (12) Келесі

Кодты өңдеу

жүзу n = 6;жүзу г. = 71;өлшемі(800, 800);толтыру();фон(255);beginShape();инсульт(0, 0, 255);инсульт Салмағы(0.5);үшін(int тета = 0; тета <= 360; тета++){  жүзу к = тета * г. * PI / 180;  жүзу р = 300 * күнә(n * к);  жүзу х = р * cos(к) + ені/2;  жүзу ж = р * күнә(к) + биіктігі/2;  шың(х, ж);}endShape();beginShape();инсульт(255, 0, 0);инсульт Салмағы(4);үшін(int тета = 0; тета <= 360; тета++){  жүзу к = тета * PI / 180;  жүзу р = 300 * күнә(n * к);  жүзу х = р * cos(к) + ені/2;  жүзу ж = р * күнә(к) + биіктігі/2;  шың(х, ж);}endShape();

p5.js коды

/*p5.js - бұл браузерде іске қосылатын өңдеу порты. Editor.p5js.org сайтына кіріп, кодты өшіріп, оны қойып, «Ойнату» батырмасын басу арқылы оны іске қосуға болады. «N» және «d» мәндерін таңдай алатын, сонымен қатар формуланы sin-тен 6 негізгі триг функциясының кез-келгеніне өзгерте алатындай етіп пайдаланушы интерфейсі қосылды (Ескерту: тек синус функциясы жарамды Маурер Роуз) * /рұқсат етіңіз n;рұқсат етіңіз г.;функциясы орнату() {  createCanvas(400, 400);  // n үшін жүгірткіні орнатады  жүгірткі = createSlider(1,100,6);  жүгірткі.стиль('ені', '300px');  жүгірткі.позиция(30,биіктігі+5);    // d үшін сырғытпаны орнатады  жүгірткіD = createSlider(1,360,71);  жүгірткіD.стиль('ені', '300px');  жүгірткіD.позиция(30,биіктігі+30);    // бұрыш формуласы үшін радио параметрлерін орнатады  бұрыш параметрлері = createRadio();  бұрыш параметрлері.позиция(10, 460);  бұрыш параметрлері.опция('күнә');  бұрыш параметрлері.опция('cos');  бұрыш параметрлері.опция('күңгірт');  бұрыш параметрлері.опция('сек');  бұрыш параметрлері.опция('csc');  бұрыш параметрлері.опция(«төсек»);  бұрыш параметрлері.стиль('ені', '60px');    // сіздің браузеріңіз есептеулер санын азайтады  frameRate(3);}функциясы сурет салу() {  n = жүгірткі.мәні();  г. = жүгірткіD.мәні();  фон(255);  Басыңыз();  толтыру();  beginShape();  инсульт(0, 0, 255);  инсульт Салмағы(0.5);  angleMode(ДӘРЕЖЕЛЕРІ);  аудару(ені/2, биіктігі/2);  үшін(рұқсат етіңіз тета = 0; тета <= 360; тета++){    рұқсат етіңіз к = тета * г.;    рұқсат етіңіз р = ені/2 * бұрыш Формула(n,к);    рұқсат етіңіз  х = р * cos(к);    рұқсат етіңіз ж = р * күнә(к);    шың(х, ж);  }  endShape();  beginShape();  инсульт(255, 0, 0);  инсульт Салмағы(2);  үшін(рұқсат етіңіз тета = 0; тета <= 360; тета++){    рұқсат етіңіз к = тета;    рұқсат етіңіз р = ені/2 * бұрыш Формула(n,к);    рұқсат етіңіз х = р * cos(к);    рұқсат етіңіз ж = р * күнә(к);    шың(х, ж);  }  endShape();  поп();  инсульт(255);  textFont('Грузия', 20);  мәтін('N (# Petals):' + str(n), 10,20);  мәтін('D:' + str(г.), 10, 50);}функциясы бұрыш Формула(n,к) {  қосқыш(бұрыш параметрлері.мәні()) {    іс «күнә»:       қайту күнә(к*n);    іс «cos»:       қайту cos(к*n);    іс «күңгірт»:       қайту тотығу(к*n);    іс «csc»:       қайту (1/күнә(к*n));    іс «сек»:       қайту (1/cos(к*n));    іс «төсек»:       қайту (1/тотығу(к*n));    әдепкі:      қайту күнә(к*n);  }}

Python коды

Python сурет салуға келгенде тиімді емес, сондықтан біраз уақыт алады. Turtle Graphics тәсілдерінің арқасында раушан көптеген басқа тілдердегідей төңкерілмейді.

импорт математика, тасбақаэкран = тасбақа.Экран()экран.орнату(ені=800, биіктігі=800, startx=0, бастаушы=0)экран.bgcolor('қара')қалам = тасбақа.Тасбақа()қалам.жылдамдық(20)n = 5г. = 97қалам.түс(«көк»)қалам.қалам(0.5)үшін тета жылы ауқымы(361):    к = тета * г. * математика.pi / 180    р = 300 * математика.күнә(n * к)    х = р * математика.cos(к)    ж = р * математика.күнә(к)    қалам.бару(х, ж)қалам.түс('қызыл')қалам.қалам(4)үшін тета жылы ауқымы(361):    к = тета * математика.pi / 180    р = 300 * математика.күнә(n * к)    х = р * математика.cos(к)    ж = р * математика.күнә(к)    қалам.бару(х, ж)

C ++ коды

SFML қажет

# қосу «SFML / System.hpp»# қосу «SFML / Graphics.hpp»# қосу «SFML / Audio.hpp»# қосу «SFML / Window.hpp»# қосу <iostream># қосу <math.h># M_PI анықтаңыз 3.14159265358979323846int негізгі() {	int n = 6;	int г. = 71;	sf::RenderWindow Терезе(sf::VideoMode(800, 800), «Раушан сынағы», sf::Стиль::Жабық );	sf::VertexArray Роза(sf::PrimitiveType::Сызықтар);	sf::VertexArray Контур(sf::PrimitiveType::Сызықтар);	Терезе.setFramerateLimit(30);	уақыт (Терезе.ашық()) {		sf::Іс-шара іс-шара;		уақыт (Терезе.сауалнама(іс-шара))		{			қосқыш (іс-шара.түрі)			{			іс sf::Іс-шара::Жабық:				Терезе.жабық();				үзіліс;			}		}		үшін (int мен = 0; мен <= 360; мен++)		{			екі есе к = мен * г. * M_PI / 180;			екі есе р = 300 * күнә(n * к);			екі есе х = -р * cos(к);			екі есе ж = -р * күнә(к);			Роза.қосу(sf::Шың(sf::Вектор2ф(х + Терезе.getSize().х / 2, ж + Терезе.getSize().ж / 2), sf::Түс::Көк));		}		үшін (int мен = 0; мен <= 360; мен++)		{			екі есе к = мен * M_PI / 180;			екі есе р = 300 * күнә(n * к);			екі есе х = р * cos(к);			екі есе ж = -р * күнә(к);			Контур.қосу(sf::Шың(sf::Вектор2ф(х + Терезе.getSize().х / 2, ж + Терезе.getSize().ж / 2), sf::Түс::Қызыл));		}		Терезе.анық(sf::Түс::Ақ);		Терезе.сурет салу(Роза);		Терезе.сурет салу(Контур);		Терезе.дисплей();	}	қайту 0;}

Пайдаланылған әдебиеттер

  • Маурер, Питер М. (тамыз-қыркүйек 1987 ж.). «Раушан - раушан ...» Американдық математикалық айлық. 94 (7): 631–645. дои:10.2307/2322215. JSTOR  2322215.
  • Вайсштейн, Эрик В. «Маурер раушандары». MathWorld. (Интерактивті демонстрациялар)


Сыртқы сілтемелер

Интерактивті демонстрация: https://codepen.io/Igor_Konovalov/full/ZJwPQv/ Музыкалық ойнатқыш: https://labo86.fr/