-1

I would like a TiKZ code to generate the following diagram, drawn with the following PSTrick code, to draw two concentric flower petals diagram, arranged in a circle, one with 8 petals and the outer with 16 petals. (This is part of a Sri yantra (or Sri chakra) drawing found in various sites, for example: https://codegolf.stackexchange.com/questions/42410/draw-sri-yantra

Here is the PSTrick Code

\SpecialCoor
\qdisk(0,0){5pt}
\multido{\rAngleA=-11.25+22.50,\rAngleB=11.25+22.50}{16}{%
  \pscustom[fillcolor=blue,fillstyle=solid]{%
    \psarc(0,0){6.5}{\rAngleA}{\rAngleB}
    \psbezier%
      (! 6.5 \rAngleB\space cos mul 6.5 \rAngleB\space sin mul)%
      (! /a \rAngleB\space 7.75 sub def 8 a cos mul 8 a sin mul)%
      (! /a \rAngleB\space 10.25 sub def 7 a cos mul 7 a sin mul)%
      (! /a \rAngleB\space 11.25 sub def 8 a cos mul 8 a sin mul)
    \psbezier%
      (! /a \rAngleA\space 11.25 add def 8 a cos mul 8 a sin mul)
      (! /a \rAngleA\space 10.25 add def 7 a cos mul 7 a sin mul)%
      (! /a \rAngleA\space 7.75 add def 8 a cos mul 8 a sin mul)%
      (! 6.5 \rAngleA\space cos mul 6.5 \rAngleA\space sin mul)%
  }
}

\multido{\rAngleA=-22.5+45.0,\rAngleB=22.5+45.0}{8}{% \pscustom[fillcolor=red,fillstyle=solid]{% \psarc(0,0){5.5}{\rAngleA}{\rAngleB} \psbezier% (! 5.5 \rAngleB\space cos mul 5.5 \rAngleB\space sin mul)% (! /a \rAngleB\space 6.75 sub def 7 a cos mul 7 a sin mul)% (! /a \rAngleB\space 12.5 sub def 5 a cos mul 5 a sin mul)% (! /a \rAngleB\space 22.5 sub def 6.5 a cos mul 6.5 a sin mul) \psbezier% (! /a \rAngleA\space 22.5 add def 6.5 a cos mul 6.5 a sin mul) (! /a \rAngleA\space 12.5 add def 5 a cos mul 5 a sin mul)% (! /a \rAngleA\space 6.75 add def 7 a cos mul 7 a sin mul)% (! 5.5 \rAngleA\space cos mul 5.5 \rAngleA\space sin mul)% } }

1 Answers1

1

A quick conversion of the above code would probably result in something like this:

\documentclass[border=10pt, tikz]{standalone}

\begin{document} \begin{tikzpicture} \fill (0,0) circle[radius=5pt]; \foreach \i in {0,...,16} { \pgfmathsetmacro{\rAngleA}{-11.25+(22.50\i)} \pgfmathsetmacro{\rAngleB}{11.25+(22.50\i)} \path[draw, fill=blue] (\rAngleA:6.5) arc[radius=6.5, start angle=\rAngleA, end angle=\rAngleB] -- ({6.5cos(\rAngleB)},{6.5sin(\rAngleB)}) .. controls ({8cos(\rAngleB-7.75)},{8sin(\rAngleB-7.75)}) and ({7cos(\rAngleB-10.25)},{7sin(\rAngleB-10.25)}) .. ({8cos(\rAngleB-11.25)},{8sin(\rAngleB-11.25)}) -- ({8cos(\rAngleA+11.25)},{8sin(\rAngleA+11.25)}) .. controls ({7cos(\rAngleA+10.25)},{7sin(\rAngleA+10.25)}) and ({8cos(\rAngleA+7.75)},{8sin(\rAngleA+7.75)}) .. ({6.5cos(\rAngleA)},{6.5sin(\rAngleA)}) -- cycle; \path[draw] (0,0) -- ({6.5cos(\rAngleA)},{6.5sin(\rAngleA)}) (0,0) -- ({8cos(\rAngleB-11.25)},{8sin(\rAngleB-11.25)}); } \foreach \i in {0,...,8} { \pgfmathsetmacro{\rAngleA}{-22.5+(45.0\i)} \pgfmathsetmacro{\rAngleB}{22.5+(45.0\i)} \path[draw, fill=red] (\rAngleA:5.5) arc[radius=5.5, start angle=\rAngleA, end angle=\rAngleB] -- ({5.5cos(\rAngleB)},{5.5sin(\rAngleB)}) .. controls ({7cos(\rAngleB-6.75)},{7sin(\rAngleB-6.75)}) and ({5cos(\rAngleB-12.5)},{5sin(\rAngleB-12.5)}) .. ({6.5cos(\rAngleB-22.5)},{6.5sin(\rAngleB-22.5)}) -- ({6.5cos(\rAngleA+22.5)},{6.5sin(\rAngleA+22.5)}) .. controls ({5cos(\rAngleA+12.5)},{5sin(\rAngleA+12.5)}) and ({7cos(\rAngleA+6.75)},{7sin(\rAngleA+6.75)}) .. ({5.5cos(\rAngleA)},{5.5sin(\rAngleA)}) -- cycle; \path[draw] (0,0) -- ({5.5cos(\rAngleA)},{5.5sin(\rAngleA)}) (0,0) -- ({6.5cos(\rAngleB-22.5)},{6.5sin(\rAngleB-22.5)}); } \end{tikzpicture} \end{document}

enter image description here