# Last edited on 2024-07-25 18:25:42 by stolfi

SHELL := /bin/bash

.PHONY: make-models make-images make_single_model make-single-image

PROG := slicing_fan_example

# Number of edges in outer chain.
# Must be a power of 2 plus 2 for smart triangulation (SUBDIV = 2) of
# objects with dented outer chain(OSHAPE = 1 or 3). 
NEO := 6

# Objects: {OSHAPE}:{INNER}
OBJECTS_ALL := 0:0 0:1  1:0 1:1  2:0 2:1  3:0 3:1 

# OBJECTS := ${OBJECTS_ALL}
OBJECTS := 2:0

# Subfigures: {SUBDIV}:{PLANES}. See {fan_main.pov}.
SUBFIGS_ALL := \
  0:0 1:0 2:0 5:0 6:0 8:0 9:0 \
  0:1 1:1 2:1 5:1 6:1 8:1 9:1

SUBFIGS_SLICING_PAPER := \
  0:1 1:1 5:1 8:1
  
SUBFIGS_MONOTONIZATION_PAPER := \
  0:0 1:0 5:0 8:0

# SUBFIGS := ${SUBFIGS_ALL}

SUBFIGS := \
  ${SUBFIGS_MONOTONIZATION_PAPER} \
  ${SUBFIGS_SLICING_PAPER} \

RUN_POVRAY := 1

all: make-models make-images

make-models:
	for object in ${OBJECTS} ; do \
          objparms=( `echo $${object} | tr ':' ' '` ) ; \
          ${MAKE} \
              OSHAPE=$${objparms[0]} \
              INNER=$${objparms[1]} \
            make-single-model ; \
        done

make-images: ${INC_FILE} ${wildcard *.inc *.pov}
	if [[ ${RUN_POVRAY} -ne 0 ]]; then \
	  for object in ${OBJECTS} ; do \
            objparms=( `echo $${object} | tr ':' ' '` ) ; \
            for subfig in ${SUBFIGS}; do \
              figparms=( `echo $${subfig} | tr ':' ' '` ) ; \
              ${MAKE} \
                  OSHAPE=$${objparms[0]} \
                  INNER=$${objparms[1]} \
                  SUBDIV=$${figparms[0]} \
                  PLANES=$${figparms[1]} \
                make-single-image ; \
            done ; \
          done ; \
        fi

ifneq "/${NEO}" "/"
ifneq "/${OSHAPE}" "/"
ifneq "/${INNER}" "/"

NEO8 := ${shell printf "%08d" "${NEO}"}

OBJ_PREF := fan_${NEO8}_osh${OSHAPE}_ich${INNER}
OBJ_FILE := out/${OBJ_PREF}.obj
INC_FILE := out/${OBJ_PREF}.inc

make-single-model: ${OBJ_FILE} ${INC_FILE}

${OBJ_FILE} ${INC_FILE}: ${PROG}.py
	mkdir -p out
	rm -fv ${OBJ_FILE} ${INC_FILE}
	${PROG}.py ${NEO} ${OSHAPE} ${INNER} || rm -fv ${OBJ_FILE} ${INC_FILE}
	if [[ -s ${OBJ_FILE} ]]; then \
          ls -l ${OBJ_FILE} ${INC_FILE} ; \
          f3d -n ${OBJ_FILE}; \
        fi

ifneq "/${SUBDIV}" "/"
ifneq "/${PLANES}" "/"
    
IMG_PREF := fan_n${NEO8}_osh${OSHAPE}_ich${INNER}_sub${SUBDIV}_pla${PLANES}
PNG_FILE := out/${IMG_PREF}.png
    
make-single-image: ${PNG_FILE}

${PNG_FILE}: ${INC_FILE} run_fan_povray.sh
	run_fan_povray.sh ${NEO} ${OSHAPE} ${INNER} ${SUBDIV} ${PLANES}

endif
endif
endif
endif
endif
