円環1
レンダリング結果

TeXソース
TeXソース
入力コード
\documentclass{tetsujsarticle}
\usepackage{tetsuryoku}
\begin{document}
\begin{tikzpicture}
\tikzset{normalstyle/.style={draw, drop shadow, fill=white, rectangle, inner sep=5pt, font=\bfseries, align=center}}
\tikzset{bubble/.style={draw, circle, fill=white, minimum width=5em}}
\def \radius {0.30\textwidth}
\def \offset{-5} % para que la linea que une rojo con verde sea diagonal
\draw[dotted, thick] ({90 + \offset - 1}:\radius*1.4) -- ({-90 + \offset -1 }:\radius*1.4);
\path[name path=circulo] (0, 0) circle (\radius);
% ELEGIR US
\node(elegir_us)[normalstyle, name path=path_elegir_us] at ({-173 + \offset}:\radius) {Elegir\\ User Story};
% START
\node (start) [node distance=0mm and 8mm, left=of elegir_us, circle, fill=black, minimum width=1pt]{};
% ESCRIBIR PRUEBAS
\node(escribir_pruebas)[normalstyle,name path=path_escribir_pruebas] at ({164 + \offset}:\radius) {Escribir pruebas\\ de aceptacion\\ para la Story};
% IMPLEMENTAR PRUEBA
\node(implementar_prueba)[normalstyle, name path=path_implementar_prueba] at ({132 + \offset}:\radius) {Implementar\\ prueba de\\ aceptacion};
% PRUEBA FALLANDO
\node(prueba_fallando)[name path=path_prueba_fallando,draw, drop shadow, fill=red, rectangle, inner sep=5pt, font=\bfseries, align=center] at ({90 + \offset}:\radius) {Prueba de\\ aceptacion\\ fallando};
% PRIMER TRIBUBBLE
\node(prueba1)[bubble,name path=path_prueba1] at ({52 + \offset}:\radius){Prueba};
\node(codigo1) [bubble, above right = 1mm and 5mm of prueba1.center] {Código};
\node(refactor1) [bubble,name path=path_refactor1, below right = 1mm and 5mm of prueba1.center] {Refactor};
% SEGUNDO TRIBUBBLE
\node(prueba2)[bubble,name path=path_prueba2] at ({0 + \offset}:\radius){Prueba};
\node(codigo2) [bubble, above right = 1mm and 5mm of prueba2.center] {Código};
\node(refactor2) [bubble, below right = 1mm and 5mm of prueba2.center] {Refactor};
% TERCER TRIBUBBLE
\node(prueba3)[bubble,name path=path_prueba3] at ({-52 + \offset}:\radius){Prueba};
\node(codigo3) [bubble,,name path=path_codigo3, above right = 1mm and 5mm of prueba3.center] {Código};
\node(refactor3) [bubble, below right = 1mm and 5mm of prueba3.center] {Refactor};
% PRUEBA PASANDO
\node(prueba_pasando)[name path=path_prueba_pasando, draw, drop shadow, fill=green, rectangle, inner sep=5pt, font=\bfseries, align=center] at ({-90 + \offset}:\radius) {Prueba de\\ aceptacion\\ pasando};
% REFACTOR
\node(refactor)[normalstyle, name path=path_refactorizar] at ({-128 + \offset}:\radius) {Refactorizar};
% ACEPTACION CLIENTE
\node(aceptacion_cliente)[normalstyle, name path=path_aceptacion_cliente] at ({-149 + \offset}:\radius) {Aceptacion\\ Cliente};
% INTERSECCIONES
% INTERSECCIÓN ELEGIR USER STORY
\path [name intersections={of=circulo and path_elegir_us,name=intELEGIRUS}];
\def \ELEGIRUSUP{intELEGIRUS-1}
\def \ELEGIRUSDOWN {intELEGIRUS-2}
% INTERSECCIÓN ESCRIBIR PRUEBAS
\path [name intersections={of=circulo and path_escribir_pruebas,name=intESCRIBIRPRUEBAS}];
\def \ESCRIBIRPRUEBASUP {intESCRIBIRPRUEBAS-1}
\def \ESCRIBIRPRUEBASDOWN {intESCRIBIRPRUEBAS-2}
% INTERSECCIÓN IMPLEMENTAR PRUEBA
\path [name intersections={of=circulo and path_implementar_prueba,name=intIMPLEMENTARPRUEBA}];
\def \IMPLEMENTARPRUEBAUP {intIMPLEMENTARPRUEBA-1}
\def \IMPLEMENTARPRUEBADOWN {intIMPLEMENTARPRUEBA-2}
% INTERSECCIÓN PRUEBA FALLANDO
\path [name intersections={of=circulo and path_prueba_fallando,name=intPRUEBAFALLANDO}];
\def \PRUEBAFALLANDORIGHT {intPRUEBAFALLANDO-1}
\def \PRUEBAFALLANDOLEFT{intPRUEBAFALLANDO-2}
% INTERSECCIÓN TRIBUBBLE 1
\path [name intersections={of=circulo and path_prueba1,name=intPRUEBAUNO}];
\def \TRIBUBBLEUNOUP {intPRUEBAUNO-1}
\path [name intersections={of=circulo and path_refactor1,name=intREFACTORUNO}];
\def \TRIBUBBLEUNODOWN {intREFACTORUNO-2}
% INTERSECCIÓN TRIBUBBLE 2
\path [name intersections={of=circulo and path_prueba2,name=intPRUEBADOS}];
\def \TRIBUBBLEDOSUP {intPRUEBADOS-1}
\def \TRIBUBBLEDOSDOWN {intPRUEBADOS-2}
% INTERSECCIÓN TRIBUBBLE 3
\path [name intersections={of=circulo and path_codigo3,name=intCODIGOTRES}];
\def \TRIBUBBLETRESUP {intCODIGOTRES-1}
\path [name intersections={of=circulo and path_prueba3,name=intPRUEBA3}];
\def \TRIBUBBLETRESDOWN {intPRUEBA3-2}
% INTERSECCIÓN PRUEBA PASANDO
\path [name intersections={of=circulo and path_prueba_pasando,name=intPRUEBAPASANDO}];
\def \PRUEBAPASANDOLEFT {intPRUEBAPASANDO-1}
\def \PRUEBAPASANDORIGHT {intPRUEBAPASANDO-2}
% INTERSECCIÓN REFACTORIZAR
\path [name intersections={of=circulo and path_refactorizar,name=intREFACTORIZAR}];
\def \REFACTORIZARUP {intREFACTORIZAR-1}
\def \REFACTORIZARDOWN{intREFACTORIZAR-2}
% INTERSECCIÓN ACEPTACION CLIENTE
\path [name intersections={of=circulo and path_aceptacion_cliente,name=intACEPTACIONCLIENTE}];
\def \ACEPTACIONCLIENTEUP{intACEPTACIONCLIENTE-1}
\def \ACEPTACIONCLIENTEDOWN{intACEPTACIONCLIENTE-2}
% LAS FLECHAS EMPEZANDO POR START Y SIGUE EL CAMINO
\draw [->,bend left=15] (node cs:name=start, anchor=east) to (node cs:name=elegir_us, anchor=west);
\draw [->,bend left=15] (\ELEGIRUSUP) to (\ESCRIBIRPRUEBASDOWN);
\draw [->,bend left=15] (\ESCRIBIRPRUEBASUP) to (\IMPLEMENTARPRUEBADOWN);
\draw [->,bend left=15] (\IMPLEMENTARPRUEBAUP) to (\PRUEBAFALLANDOLEFT);
\draw [->,bend left=15] (\PRUEBAFALLANDORIGHT) to (\TRIBUBBLEUNOUP);
\draw [->,bend left=15] (\TRIBUBBLEUNODOWN) to (\TRIBUBBLEDOSUP);
\draw [->,bend left=15] (\TRIBUBBLEDOSDOWN) to (\TRIBUBBLETRESUP);
\draw [->,bend left=15] (\TRIBUBBLETRESDOWN) to (\PRUEBAPASANDORIGHT);
\draw [->,bend left=15] (\PRUEBAPASANDOLEFT) to (\REFACTORIZARDOWN);
\draw [->,bend left=15] (\REFACTORIZARUP) to (\ACEPTACIONCLIENTEDOWN);
\draw [->,bend left=15] (\ACEPTACIONCLIENTEUP) to (\ELEGIRUSDOWN);
% TDD Y ATDD
\node [above left = 10mm and 10mm of prueba_fallando.center, font=\Large\bfseries] {ATDD};
\node [above right = 10mm and 10mm of prueba_fallando.center, font=\Large\bfseries] {TDD};
\end{tikzpicture}
\end{document}