Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Fractals/Computer graphic techniques/2D/plane

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

2D plane direct links: coordinate transformations ( maps ) quality of the image graphic files parameter files Size and resolution of the image Scanning, sampling and decomposition Geometry EuclideanEuclidean space in wikipedia non-EuclideanNon-Euclidean Geometry by Malin Christersson ( 2018) hyperbolic eliptic thumb|right|Differences between Euclidean and non-Eucl. geometries: behavior of lines with a common perpendicular in each of the three types of geometry Quality of image geometry: good ( not distorted) bad ( distorted) visualisation grid level sets Zebra striping in computer graphics checker board ( chess board) Viewport (visible part of the plane ) A viewport is a polygon viewing region in computer graphics.viewport in wikipedia Description Rectangle part of 2D plane can be described by : corners ( 4 real numbers or 2 complex numbers = 2D points) center and : width ( 3 real numbers ) magnification radius "People specify fractal coordinates in many ways. Some people use the coordinates of the upper-left and lower-right visible points, specifying the coordinates as four numbers x1, y1, x2, y2. To set the same viewpoint in XaoS, set the real portion of the center to (x1+x2)/2, the imaginary part of center to (y1+y2)/2, and the radius to the greater of x2-x1 and y2-y1." ( from Xaos docXaos - view ) Corners Standard description in Fractint, Ultra Fractal, ChaosPro and Fractal Explorer are corners. For example initial plane for Mandelbrot set is Corners: X Y Top-l -2.5000000000000000 1.5000000000000000 Bot-r 1.5000000000000000 -1.5000000000000000 Ctr -0.5000000000000000 0.0000000000000000 Mag 6.66666667e-01 X-Mag-Factor 1.0000 Rotation 0.000 Skew 0.000 Display window of parameter plane has : a horizontal width of 4 (real) a vertical width (height) of 3 (imag) an aspect ratio (proportion) 4/3 ( also in pixels 640/480 so ther is no distorsion) center z=-0.5 See demo par file : Mandel_Demo { ; PAR for initialization of Fractint demo reset=1900 type=mandel corners=-2.5/1.5/-1.5/1.5 params=0/0 inside=0 sound=no } For julia set/ dynamic plane has : Corners: X Y Top-l -2.0000000000000000 1.5000000000000000 Bot-r 2.0000000000000000 -1.5000000000000000 Ctr 0.0000000000000000 0.0000000000000000 Mag 6.66666667e-01 X-Mag-Factor 1.0000 Rotation 0.000 Skew 0.000 Description from documentation of Fractint : CORNERS=[xmin/xmax/ymin/ymax[/x3rd/y3rd]] Example: corners=-0.739/-0.736/0.288/0.291 Begin with these coordinates as the range of x and y coordinates, rather than the default values of (for type=mandel) -2.0/2.0/-1.5/1.5. When you specify four values (the usual case), this defines a rectangle: x- coordinates are mapped to the screen, left to right, from xmin to xmax, y-coordinates are mapped to the screen, bottom to top, from ymin to ymax. Six parameters can be used to describe any rotated or stretched parallelogram: (xmin,ymax) are the coordinates used for the top-left corner of the screen, (xmax,ymin) for the bottom-right corner, and (x3rd,y3rd) for the bottom-left. Entering just "CORNERS=" tells Fractint to use this form (the default mode) rather than CENTER-MAG (see below) when saving parameters with the [B] command. int SetPlaneFromCorners(double CxMin , double CxMax, double CyMin , double CyMax){ Radius = fabs(CyMax-CyMin)/2.0; Magnification = 1.0/Radius; // http://www.purplemath.com/modules/midpoint.htm Center = (CxMax+CxMin)/2.0 + I*(CyMax+CyMin)/2.0; return 0; } Center and ... "If you use the center, you can change the zoom level and the plot zooms in/out smoothly on the same center point. " Duncan C). magnification Fractint uses Mag ( compare with Xmagfactor) CENTER-MAG=[Xctr/Yctr/Mag[/Xmagfactor/Rotation/Skew]] This is an alternative way to enter corners as a center point and a magnification that is popular with some fractal programs and publications. Entering just "CENTER-MAG=" tells Fractint to use this form rather than CORNERS (see above) when saving parameters with the [B] command. The [TAB] status display shows the "corners" in both forms. When you specify three values (the usual case), this defines a rectangle: (Xctr, Yctr) specifies the coordinates of the center of the image. Mag indicates the amount of magnification to use. Initial value ( no zoom ) is 6.66666667e-01. Six parameters can be used to describe any rotated or stretched parallelogram: Xmagfactor tells how many times bigger the x- magnification is than the y-magnification, Rotation indicates how many degrees the image has been turned. Skew tells how many degrees the image is leaning over. Positive angles will rotate and skew the image counter-clockwise. Parameters can be saved to parmfile called fractint.par width Wolf Jung uses center and width in Mandel: /* from mndlbrot.cpp by Wolf Jung (C) 201 These classes are part of Mandel 5.7, which is free software; you can redistribute and / or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. In short: there is no warranty of any kind; you must redistribute the source code as well */ void mndlbrot::startPlane(int sg, double &xmid, double &rewidth) const { if (sg > 0) { xmid = -0.5; rewidth = 1.6; } // parameter plane else { xmid = 0; rewidth = 2.0; } // dynamic plane width and height to describe plane ( view ) Xaos uses: 4 numbers in scripts 3 numbers in menu Xaos uses to call it "radius" but it is defind as : the greater of (x2-x1= width) and y2-y1=height." radius It is very usefull for zooming : fix center and only change radius. Claude Heiland-AllenClaude Heiland-Allen blog use center and radius for parameter plane of complex quadratic polynomial: Radius is defined as: the radius of a circle that fits within the actual frame of the image "the difference in imaginary coordinate between the center and the top of the axis-aligned view rectangle". "px_radius is half the width of the image (in real coordinates)" Exponential Map by Robert P. Munafo, 2010 Dec 5. From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2020.   view="-0.75 0 1.5" # standard view of parameter plane : center_re, center_im, radius // modified code using center and radius to scan the plane int height = 720; int width = 1280; double dWidth; double dRadius = 1.5; double complex center= -0.75*I; double complex c; int i,j; double width2; // = width/2.0 double height2; // = height/2.0 width2 = width /2.0; height2 = height/2.0; complex double coordinate(int i, int j, int width, int height, complex double center, double radius) { double x = (i - width /2.0) / (height/2.0); double y = (j - height/2.0) / (height/2.0); complex double c = center + radius * (x - I * y); return c; } for ( j = 0; j < height; ++j) { for ( i = 0; i < width; ++i) { c = coordinate(i, j, width, height, center, dRadius); // do smth } } another version int main() { int aa = 4; int w = 800 * aa; int h = 800 * aa; #pragma omp parallel for schedule(static, 1) for (int j = 0; j < h; ++j) { double y = (h/2 - (j + 0.5)) / (h/2) * r; for (int i = 0; i < w; ++i) { double x = (i + 0.5 - w/2) / (h/2) * r; double _Complex c = x + I * y; // proceed } } return 0; } The same in GLSL ( for Shadertoy) : vec2 GiveCoordinate(vec2 center, float radius, vec2 fragCoord, vec3 iResolution) { // from pixel to world coordinate // now point (0,0) is left bottom // point (iResolution.x, iResolution.y) is right top float x = (fragCoord.x - iResolution.x/2.0)/ (iResolution.y/2.0); float y = (fragCoord.y - iResolution.y/2.0)/ (iResolution.y/2.0); vec2 c = vec2(center.x + radius*x, center.y + radius*y) ; return c ; } Set plane corners from radius, center and aspect ratio: int SetPlane(complex double center, double radius, double a_ratio){ ZxMin = creal(center) - radius*a_ratio; ZxMax = creal(center) + radius*a_ratio; //0.75; ZyMin = cimag(center) - radius; // inv ZyMax = cimag(center) + radius; //0.7; double PixelWidth = (ZxMax-ZxMin)/iWidth; double PixelHeight = (ZyMax-ZyMin)/iHeight; // pixel_size = PixelWidth = PixelHeight return 0; } Orientation There is a major incompatibility between: the standard Math convention taught in Math class = standard coordinates (y-up) some CS graphics programming systems (but not all) = y-down Check orientation of the plane by marking first quadrant of Cartesian plane : if (x>0 && y>0) Color=MaxColor-Color; It should be in upper right position. OpenGL is right handed in object space and world space. But in window space (aka screen space) we are suddenly left handed.stackoverflow question: is-opengl-coordinate-system-left-handed-or-right-handed See also math.stackexchange question: proper-name-for-inverted-cartesian-coordinate-system Aspect ratio image display image The aspect ratio of an image is the ratio of its width to its height, and is expressed with two numbers separated by a colon, such as 16:9, sixteen-to-nine. For the x:y aspect ratio, the image is x units wide and y units high. Common aspect ratios are 1.85:1 and 2.39:1 in cinematography, 4:3 and 16:9 in television photography, and 3:2 in still photography. Display Aspect ratio The aspect ratio, or more precisely the Display Aspect Ratio (DAR)wikipedia : Aspect_ratio_(image) – the aspect ratio of the image as displayed. For TV: for TV DAR as traditionally 4:3 (a.k.a. Fullscreen) now is 16:9 (a.k.a. Widescreen) now the standard for HDTV Optimisation "recursive algorithm to split the image up into blocks, and tests each block to see whether it lies inside a “black area”." by Michael Hoggmichael hogg : fractalnet Poincaré half-plane metric for zoom animation A Simple Optimization of Fractal Animation by Wei-Yin Chen, You-Sheng Yang and Kun-Mao Liang optimizing zoom animations by Claude Heiland-Allen optimizing zoom animations by Claude Heiland-Allen reenigne blog : recursive subdivision Xaos - algorithm description New fast method !!!! Zooming by Albert Lobo Cusidó Rendering the Mandelbrot Set — with an example implementation in javascript By Christian Stigen Larsen perturbation Patterns Stripe Patterns on Surfaces" given by Keenan Crane References