Skip to content

Self-validation or want to discover the re-emergence of shapes more easily #3

Open

Description

@reversi-fun

I also forked and modified this program.
But I might have broken something,
so I'd like to have a self-verification feature.

As one such feature,

  • I've added a function like displaying the rotation angle of shapes as a color.
  • In order to visually find Mystic shapes consisting of two shapes and recognize the direction of rotation,
    it is easier to see distorted spectre shapes such as Tile(1,Sqrt(3)) than Tile(1,1).

Thease made it easy to find a cluster containing three Mystic shapes.
Take a look at the attached image.
spectre_tile7 3-12 7_3it-note

Now, is it right that similar shapes reappear so easily?
or, Can you find "4 Mystic shapes clasters" ?

  • Limitations of visual verification
     My modding code drew 2147679 spectre tiles in about 90 seconds, raterating Tiles (7.3, 12.7) 7 ITERATIONS.
    When I open that SVG file in the browser, the browser crashes.
drowsvg: drawPolygon save to spectre_tile7.3-12.7_7-2147679useRef.svg =  File-Size= 373,690,928Bytes.
drowsvg: total processing time 88.1469 seconds, 41.0429 μs/tile

Activity

  1. reversi-fun commented on Feb 15, 2024

    @reversi-fun
    Author

    Attempted Solution Using Ruby for Algebraic Calculations with Symbolic Coefficients

    I attempted to port the solution for this issue to Ruby language, enabling algebraic calculations with symbolic coefficients.
    By doing so,

    • I was able to separate irregularities caused by the irrational number (\sqrt{3}) from the fractal regularity.
    • This approach helps mitigate the impact of floating-point errors.
    • Additionally, defining a class for algebraic calculations made it easier to add verification code based on mathematical properties.

    Feel free to explore this Ruby-based solution and provide feedback!

    https://github.com/reversi-fun/symbolic-spectre-tiles

    coef A = 7.320508075688773		Ratio(0.366)
    coef B = 12.679491924311227		Ratio(0.634)
    
    Mystic_SPECTRE_POINTS = [
    	0+0i, 		(0.0 + 0.0*i),
    	((1.0)*B)+0i, 		(12.6795 + 0.0*i),
    	((1.5)*B)-((0.5)*B*√3)*i, 		(19.0192 + -10.9808*i),
    	((1.5)*B + (0.5)*A*√3)-((-0.5)*A + (0.5)*B*√3)*i, 		(25.359 + -7.3205*i),
    	((1.5)*B + (0.5)*A*√3)+((1.5)*A + (-0.5)*B*√3)*i, 		(25.359 +  **0.0*i**),
    	((2.5)*B + (0.5)*A*√3)+((1.5)*A + (-0.5)*B*√3)*i, 		(38.0385 + **0.0*i**),
    	((3.0)*B + (0.5)*A*√3)+((1.5)*A)*i, 		(44.3782 + 10.9808*i),
    	((3.0)*B)+((2.0)*A)*i, 		(38.0385 + 14.641*i),
    	((3.0)*B + (-0.5)*A*√3)+((1.5)*A)*i, 		(31.6987 + 10.9808*i),
    	((2.5)*B + (-0.5)*A*√3)+((1.5)*A + (0.5)*B*√3)*i, 		(25.359 + 21.9615*i),
    	((1.5)*B + (-0.5)*A*√3)+((1.5)*A + (0.5)*B*√3)*i, 		(12.6795 + 21.9615*i),
    	((0.5)*B + (-0.5)*A*√3)+((1.5)*A + (0.5)*B*√3)*i, 		(0.0 + 21.9615*i),
    	((-0.5)*A*√3)+((1.5)*A)*i, 		(-6.3397 + 10.9808*i),
    	0+((1.0)*A)*i, 		(0.0 + 7.3205*i),
    ]
    
  2. chengchu88 commented on Feb 26, 2024

    @chengchu88

    thank you both for sharing the code. I gave it a try and still sees the mystic clusters, and so far it seems only works for edge_a=edge_b? wonder how to fix it? thank you!

  3. reversi-fun commented on Feb 27, 2024

    @reversi-fun
    Author

    @chengchu88
    This issue should have been posted in my repository(symbolic-spectre-tiles).

    it seems only works for edge_a=edge_b?

    There may be a mis-understanding due to the confusion surrounding the following terms:

    • “The Hat”: Refers to the 13-sided polygon that requires its own mirror reflections.
      It family includes { hats or turtles}.
    • “Weakly Chiral Aperiodic Monotile”: Describes the 14-sided polygon where Tile(1,1)
      == Tile(Edge_a,Edge_b) {Edge_a == Edge_b} is a monotile.
    • “Spectres”: Refers to the edges of Tile(Edge_a,Edge_b) that produce a “family of shapes” we call “Spectres.”
      The set includes { (Edge_a ==Edge_b) => “Spectre” , (Edge_a != Edge_b) => {“Chevron,” and “Comet”}}.
      Perhaps what you refer to as “mystic clusters” falls into the category of {“Chevron” or “Comet”}.
      These are all part of the family of “Spectres.”

    wonder how to fix it?

    If it's a bug that can be fixed, I'd like to know how to fix it.

    but may be NONE!

    I am in the process of confirming that the self-verification function built into (symbolic-spectre-tiles) implements the algorithm shown in the original paper and related articles.


    If exist Tile(Edge_a,Edge_b) {Edge_a NOT equal to Edge_b} is a monotile,
    I couldn't find a way to fix it from the original paper or its companion article.

    In the tile pattern quoted in the original article, observe the pattern when the Edge_a and Edge_b change continuously.

    • If Edge_a != Edge_b then {{"Chevron" and "Comet"} or {14-sided Hat and Turtle}} are drawn ( NOT monotile,).
    • If Edge_a ==Edge_b only at the moment {"Spectre"} is depicted (monotile) .

    https://cs.uwaterloo.ca/~csk/spectre/examples/anim.gif
    https://www.youtube.com/watch?v=vtpswcAfWiI&t=28s
    https://www.youtube.com/watch?v=3CxF-GkkjiU

    chevron-commet

  4. chengchu88 commented on Feb 28, 2024

    @chengchu88
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions