File:Pseudo Kleinian OpenCL 214854124 25K.jpg
Original file (8,000 × 4,500 pixels, file size: 54.98 MB, MIME type: image/jpeg)
Captions
Summary[edit]
DescriptionPseudo Kleinian OpenCL 214854124 25K.jpg |
Deutsch: Bild im Detail eines Pseudo Kleinian-Fraktals. Dieses Fraktal basiert auf der Kleinschen Gruppe. "Pseudo" bezieht sich auf die Rendertechnik, die aber kohärent mit der Kleinschen Gruppe ist. Wie bei der Grenzmenge der Kleinschen Gruppe spielen kompakte Kreise eine Rolle, jedoch werden hier auch "dreidimensionale Kreise", also Kugeln oder Sphären eingesetzt. Deutlich wird die Selbstähnlichkeit, denn von den großen, durchgängigen Kugeln gehen Abzweigungen aus, die jeweils als Tripel auftauchen. Gegen die Grenzen (bspw. die Löcher in den Sphären) laufend werden die Abzweigungen unendlich, aber die dreifache Verzweigung ist deutlich. Zwischen bestimmten Distanzen sind unendlich viele Kreise zu finden. Bewegen Sie den Masuzeiger über das Bild, um die dreifachen Verzweigungshinweise zu sehen. Um genauer zu verstehen, was das Fraktal darstellt und welchen Bezug es hat, siehe: Kleinsche Gruppe auf Wikipedia
Formel: void PseudoKleinianIteration(CVector4 &z, const sFractal *fractal, sExtendedAux &aux) { // sphere inversion slot#1 iter == 0 added v2.17 if (fractal->transformCommon.sphereInversionEnabledFalse) { if (aux.i < 1) { double rr = 1.0; z += fractal->transformCommon.offset000; rr = z.Dot(z); z *= fractal->transformCommon.maxR2d1 / rr; z += fractal->transformCommon.additionConstantA000 - fractal->transformCommon.offset000; // double r = sqrt(rr); aux.DE = aux.DE * (fractal->transformCommon.maxR2d1 / rr) + fractal->analyticDE.offset0; } } CVector4 gap = fractal->transformCommon.constantMultiplier000; double t; double dot1; // prism shape if (fractal->transformCommon.functionEnabledPFalse && aux.i >= fractal->transformCommon.startIterationsP && aux.i < fractal->transformCommon.stopIterationsP1) { z.y = fabs(z.y); z.z = fabs(z.z); dot1 = (z.x * -SQRT_3_4 + z.y * 0.5) * fractal->transformCommon.scale; t = max(0.0, dot1); z.x -= t * -SQRT_3; z.y = fabs(z.y - t); if (z.y > z.z) swap(z.y, z.z); z -= gap * CVector4(SQRT_3_4, 1.5, 1.5, 0.0); // z was pos, now some points neg (ie neg shift) if (z.z > z.x) swap(z.z, z.x); if (z.x > 0.0) { z.y = max(0.0, z.y); z.z = max(0.0, z.z); } } // box fold abs() tglad fold added v2.17 if (fractal->transformCommon.functionEnabledByFalse && aux.i >= fractal->transformCommon.startIterationsE && aux.i < fractal->transformCommon.stopIterationsE) { z.x = fabs(z.x + fractal->transformCommon.additionConstant111.x) - fabs(z.x - fractal->transformCommon.additionConstant111.x) - z.x; z.y = fabs(z.y + fractal->transformCommon.additionConstant111.y) - fabs(z.y - fractal->transformCommon.additionConstant111.y) - z.y; if (fractal->transformCommon.functionEnabledBy) { z.z = fabs(z.z + fractal->transformCommon.additionConstant111.z) - fabs(z.z - fractal->transformCommon.additionConstant111.z) - z.z; } } // box fold if (fractal->transformCommon.functionEnabledBxFalse && aux.i >= fractal->transformCommon.startIterationsA && aux.i < fractal->transformCommon.stopIterationsA) { if (fabs(z.x) > fractal->mandelbox.foldingLimit) { z.x = sign(z.x) * fractal->mandelbox.foldingValue - z.x; aux.color += fractal->mandelbox.color.factor.x; } if (fabs(z.y) > fractal->mandelbox.foldingLimit) { z.y = sign(z.y) * fractal->mandelbox.foldingValue - z.y; aux.color += fractal->mandelbox.color.factor.y; } double zLimit = fractal->mandelbox.foldingLimit * fractal->transformCommon.scale1; double zValue = fractal->mandelbox.foldingValue * fractal->transformCommon.scale1; if (fabs(z.z) > zLimit) { z.z = sign(z.z) * zValue - z.z; aux.color += fractal->mandelbox.color.factor.z; } } // PseudoKleinian CVector4 cSize = fractal->transformCommon.additionConstant0777; CVector4 tempZ = z; // correct c++ version. if (z.x > cSize.x) tempZ.x = cSize.x; if (z.x < -cSize.x) tempZ.x = -cSize.x; if (z.y > cSize.y) tempZ.y = cSize.y; if (z.y < -cSize.y) tempZ.y = -cSize.y; if (z.z > cSize.z) tempZ.z = cSize.z; if (z.z < -cSize.z) tempZ.z = -cSize.z; z = tempZ * 2.0 - z; double k = max(fractal->transformCommon.minR05 / z.Dot(z), 1.0); z *= k; aux.DE *= k + fractal->analyticDE.tweak005; // rotation if (fractal->transformCommon.functionEnabledRFalse && aux.i >= fractal->transformCommon.startIterationsR && aux.i < fractal->transformCommon.stopIterationsR) z = fractal->transformCommon.rotationMatrix.RotateVector(z); // offset z += fractal->transformCommon.additionConstant000; aux.pseudoKleinianDE = fractal->analyticDE.scale1; } English: Detailed image of the Pseudo Kleinian fractal. This fractal is based on the Kleinian group. "Pseudo" means here a variant of rendering, but it has the same attributes like the Kleinian group. Like the limit set of a Kleinian group, in this fractal compact circles are an important aspect, but here are "threedimensionales circles" too (spheres). The self-similarity is also given, at some spheres are branches connected to them as triples. The nearer the limit (e.g. the holes of the spheres), the larger the amount of the branches. Between some distances you can find theoretically an infinite amount of circles in the fractal. Hover the cursor over the image to see bigger and smaller triples of branches. To learn more information relating to this fractal and what this is representing, see: Kleinian group at Wikipedia. |
Date | |
Source | Own work |
Author | PantheraLeo1359531 |
CGI.
Licensing[edit]
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
This image has been assessed using the Quality image guidelines and is considered a Quality image.
العربية ∙ جازايرية ∙ беларуская ∙ беларуская (тарашкевіца) ∙ български ∙ বাংলা ∙ català ∙ čeština ∙ Cymraeg ∙ Deutsch ∙ Schweizer Hochdeutsch ∙ Zazaki ∙ Ελληνικά ∙ English ∙ Esperanto ∙ español ∙ eesti ∙ euskara ∙ فارسی ∙ suomi ∙ français ∙ galego ∙ עברית ∙ हिन्दी ∙ hrvatski ∙ magyar ∙ հայերեն ∙ Bahasa Indonesia ∙ italiano ∙ 日本語 ∙ Jawa ∙ ქართული ∙ 한국어 ∙ kurdî ∙ Lëtzebuergesch ∙ lietuvių ∙ македонски ∙ മലയാളം ∙ मराठी ∙ Bahasa Melayu ∙ Nederlands ∙ Norfuk / Pitkern ∙ polski ∙ português ∙ português do Brasil ∙ rumantsch ∙ română ∙ русский ∙ sicilianu ∙ slovenčina ∙ slovenščina ∙ shqip ∙ српски / srpski ∙ svenska ∙ தமிழ் ∙ తెలుగు ∙ ไทย ∙ Tagalog ∙ Türkçe ∙ toki pona ∙ українська ∙ vèneto ∙ Tiếng Việt ∙ 中文 ∙ 中文(简体) ∙ 中文(繁體) ∙ +/− |
Annotations InfoField | This image is annotated: View the annotations at Commons |
3 Verzweigungen/3 branches
3 Verzweigungen/3 branches
3 Verzweigungen/3 branches
3 Verzweigungen/3 branches
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 08:48, 25 July 2019 | 8,000 × 4,500 (54.98 MB) | PantheraLeo1359531 (talk | contribs) | Downsized to 8000x4500 px. | |
17:56, 24 July 2019 | 25,600 × 14,400 (415.69 MB) | PantheraLeo1359531 (talk | contribs) | User created page with UploadWizard |
You cannot overwrite this file.
File usage on Commons
The following 3 pages use this file:
File usage on other wikis
The following other wikis use this file:
- Usage on en.wikibooks.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Horizontal resolution | 192 dpi |
---|---|
Vertical resolution | 192 dpi |
Software used | paint.net 4.2 |