Skip to content
This repository has been archived by the owner on Mar 25, 2021. It is now read-only.

worldmaker18349276/magicpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

magicball

library for analyzing twisty puzzle

Goal

Jumbling mechanism is too complex to find all state of puzzle, so it is rarely to find a jumbling twisty puzzle simulator. But if we use geometric analysis to check whether the operation is valid, rather than pre-define which operation we can use, that is possible to simulate the puzzle in jumbling state. The main goal of this project is provide an API for jumbling twisty puzzle simulator.

Inspiration

Design

  • modelling/visualizing/analyzing
  • OpenSCAD-liked/FreeCAD-liked interface
  • play & improve

List

symplus: (math model)

  • typlus

    is_Tuple, is_Symbol, is_Number, is_Boolean, is_Matrix, is_Function
    type_match
    pack_if_not, unpack_if_can, repack_if_can
    free_symbols, rename_variables_in

  • matplus

    basic vector operation (norm, normalize, dot, cross, angle, project)

  • simplus

    sqrt (sqrtsimp, with_sqrtsimp)
    matrix (matsimp, with_matsym)
    relational (polyrelsimp, logicrelsimp)

  • strplus

    MathPrinter, pr, mprint, mstr, init_mprinting

  • funcplus

    Functor
    Compose, Inverse, Apply

  • logicplus

    Forall, Exist

  • setplus

    AbstractSet, AbsoluteComplement
    as_abstract (Interval, ProductSet)
    Image, Contains
    simplify_boolean
    is_open, is_close
    Interior, Closure, Exterior
    regularize, Regularization, Regularized(AbsoluteComplement/Intersection/Union)
    Topology, DiscreteTopology, NaturalTopology

  • path

    FreeMonoid, Word
    PathMonoid, Path
    (Lambda/Additive/Multiplicative/Transformation)Path
    (Tensor/Concatenated/Sliced)Path

  • affine

    tvec, rquat, parity, zfac, stri
    (/Affine/Euclidean)Transformation
    rotation, translation, reflection, scaling, shearing
    regular motion (rotate, shift)

  • euclid

    EuclideanSpace, WholeSpace
    Halfspace, Sphere, InfiniteCylinder, SemiInfiniteCone, Revolution
    Cube, Cylinder, Cone
    + EuclideanTopology (regular_open, interior, closure)

  • poly

    vertices of 5 regular polyhedron
    + ConvexPolyhedron (from_hrepr, as_hrepr)
    + PointGroup
    + cut_by, is_disjoint, is_subset

magicpy: (puzzle model)

  • solid:

    • general

      SolidEngine

    • sym

      SymbolicSolidEngine
      SymbolicSolidEngineVolumeAlgo

    • marching

      Voxels, VoxelEngine

    • board

      + Board(show, hide, animate, texture(color, transparent, highlight))

  • puzzle:

    • basic

      Puzzle, (/Wrapped/Identity/Concatenated/Continuous)Operation
      TensorPuzzle, (Tensor/Parrallel)Operation
      CombinationalPuzzle, (Combinational/ContinuousCombinational/Selective)Operation

    • phy

      PhysicalPuzzle, (Physical/Partitional)Operation
      Symbolic(/SE3/SO3/T3)PhysicalPuzzle, Symbolic(Physical/Partitional)Operation
      + MagicBall/MagicShell/Interlock

  • museum:

    • FifteenPuzzle
    • RubiksCube
    • ball2x2x2
    • MirrorCube
    • LightingGame

MagicPart: (FreeCAD module)

  • Basic

    fuzzyCompare(float, list, dict, Quantity, Vector, Rotation, Placement)
    spstr2spexpr, spexpr2spstr, fcexpr2spexpr, spexpr2fcexpr
    Param

  • Shapes:

    • Utilities

      reshape, mass, center

    • Operation

      complement, common, fuse, compound, transform
      + is_null, is_outside, is_inside, no_collision

    • Primitive

      makeConicalFrustum, perturb, construct
      + perturbation (to avoid OCC bugs)

    • BooleanTracing

      biter, innerPointsOf, trace

  • Meshes:

    • Utilities

      asMesh, remesh, orientation, mass, center

    • Operation

      complement, common, fuse, compound, transform
      + is_null, is_outside, is_inside, no_collision

    • Primitive

      makeConicalFrustum, construct

  • Features:

    • Utilities

      centerOf, massOf, meshOf, boundBoxOf
      ftrlist, typeIdOf, isDerivedFrom, isTouched, isDependOn, featurePropertiesOf, addObject
      forceTouch, retouch
      weakRecomputable, weakRecompute, recompute

    • Variable

      + Variable(Scalar/Vector/Matrix/Transformation)

    • ViewBox

      getViewBox, initViewBox, setMaxBoundBox
      isBounded
      fitBounded, fitFeatures
      hideAllUnbounded, viewAllBounded, viewBoundedSelections

    • SubObject

      subFaceLinksOf, subShapeOf, subColorOf
      trace, outFaceLinksOf, outOf
      getSubSelection, shiftToSelection

    • Operation

      Compound, Intersection, Union, AbsoluteComplement, Image
      common, fuse, cut, complement, transform, compound, compoundFuse, compoundTransform, partition, fragment, slice
      isOutside, isInside, catch, noCollision

    • Primitive

      Feature
      WholeSpace, Halfspace, InfiniteCylinder, SemiInfiniteCone
      Sphere, Box, Cylinder, Cone
      show, contruct, SymPyExpressionOf

    • Wrapper

      Apart, Mask
      apart, mask
      + unwrap

  • Commands:

    • Control

      Toggle(Transparency/Touched)
      (/Force)RefreshSelected
      ShiftToChildren, View, Focus

    • Primitive

      AdjustViewBox
      Create(Box/Cylinder/Cone/Sphere)
      Create(Halfspace/InfiniteCylinder/InfiniteCone/WholeSpace)

    • Operation

      Common, Fuse, Cut, Complement, Transform
      Group(Mask/Slice)
      Apart, Mask

    • Check

      + isBounded, isEmpty
      + isOutside, isInside, catch, noCollision

About

library for analyzing twisty puzzle

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages