File:Pseudo Kleinian 29072019 002 8K HQ.jpg
Original file (8,000 × 4,500 pixels, file size: 31.62 MB, MIME type: image/jpeg)
Captions
Summary
[edit]DescriptionPseudo Kleinian 29072019 002 8K HQ.jpg |
Deutsch: Bild im Detail eines Pseudo Kleinian-Fraktals mittels genauem Raytracing.
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 a Pseudo Kleinian fractal with exact raytracing.
}Formula: 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; |
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 ∙ 中文 ∙ 中文(简体) ∙ 中文(繁體) ∙ +/− |
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 07:56, 30 July 2019 | 8,000 × 4,500 (31.62 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
- Usage on et.wikipedia.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.
JPEG file comment |
|
---|