# Finds straight segments at a given scale and maps them to other scales. # Last edited on 2008-02-04 13:01:21 by stolfi INIBAND := 016 BANDS := 001 008 064 NONBANDS := 002 004 016 032 128 256 # SHOWHIS := FALSE SHOWHIS := TRUE .PHONY: all clean hist ini-str map-str \ draw-ini-str draw-mapped-str \ all-bands \ single-clean \ single-hist \ single-get-str \ single-map-str \ single-draw-mapped-str # Top-level make starts here: all: hist # all: ini-str draw-ini-str # all: draw-ini-str # all: map-str # all: draw-mapped-str # all: refine # all: clean hist: ${MAKE} TARGET=single-hist all-bands ini-str: ${MAKE} BAND=${INIBAND} single-get-str map-str: ${MAKE} TARGET=single-map-str all-bands draw-mapped-str: ${MAKE} TARGET=single-draw-mapped-str all-bands clean: ${MAKE} TARGET=single-clean all-bands # ====================================================================== # First-level recursive make - iteration over all scales # Caller must define ${TARGET} TARGET := TARGET.IS.UNDEFINED ifneq "${TARGET}" "TARGET.IS.UNDEFINED" all-bands: for band in ${BANDS}; do \ ${MAKE} BAND=$$band ${TARGET}; \ done endif # End of TARGET section # ====================================================================== # Program path: PROGDIR := ${STOLFIHOME}/programs/pm3-1.1.15/THESES/hcgl/1/bin/${PLATFORM} SCRIPTDIR := ../../scripts SETPATH := PATH=".:${PROGDIR}:${SCRIPTDIR}:$$PATH"; export PATH # Directory for curve data: CURVEDIR := ../../data/multiscale NCURVES := 403 FIRSTCURVE := 0000 LASTCURVE := 0402 ABIGCURVE := 0002 # ====================================================================== # Second-level recursion - single BAND . # Caller must define ${BAND} BAND := BAND.IS.UNDEFINED ifneq "${BAND}" "BAND.IS.UNDEFINED" # Rule for converting parameter file from "csh" to "sh/bash" format f${BAND}.shparms: f${BAND}.parms ${SCRIPTDIR}/convert-parms-to-sh ${SCRIPTDIR}/convert-parms-to-sh < f${BAND}.parms > f${BAND}.shparms # ---------------------------------------------------------------------- # Generate a full-curve segment file for a bunch of curves # Prefix for full-curve segment sample files FULSEGPREFIX := f${BAND}-fulseg NFULSEGS := 50 ${FULSEGPREFIX}.seg: ${CURVEDIR}/${ABIGCURVE}/f${BAND}.fcv \ ${SCRIPTDIR}/create-full-seg-file @echo "${CURVEDIR}/????/f${BAND}.fcv -> ${FULSEGPREFIX}.seg" ${SETPATH}; \ ${SCRIPTDIR}/create-full-seg-file \ -v chainDir=${CURVEDIR} \ -v iniCurve=${FIRSTCURVE} -v finCurve=${LASTCURVE} \ -v band=${BAND} \ > ${FULSEGPREFIX}.seg # ---------------------------------------------------------------------- # Generate the curvature histogram for the full curves # Prefix for curvature histogram files FULHISPREFIX := f${BAND}-fulcvh FULHISPLTFILES := ${FULHISPREFIX}-plain.plt ${FULHISPREFIX}-squeezed.plt FULHISEPSFILES := ${FULHISPREFIX}-plain.eps ${FULHISPREFIX}-squeezed.eps single-hist: ${FULHISEPSFILES} FRACTALDIM := 1.00 SIGMACURV := 0.175 ALPHACRIT := 0.858 MAXCURV := ${shell echo `gawk -v band=${BAND} -v dim=${FRACTALDIM} -v alpha=${ALPHACRIT} 'BEGIN{printf "%8.6f", 1.2*alpha/exp(dim*log(band));}'`} MAXFULHISSEGS := ${shell echo `gawk -v band=${BAND} 'BEGIN{printf "%d", 5*(band+1);}'`} ${FULHISPLTFILES}: ${FULSEGPREFIX}.seg \ ${CURVEDIR}/${ABIGCURVE}/f${BAND}.fcv f${BAND}.shparms \ ${PROGDIR}/PZCurvHistogram @echo "${CURVEDIR}/????/f${BAND}.seg -> ${FULHISPREFIX}-{plain,squeezed}.plt" -/bin/rm -f ${FULHISPREFIX}.plt ${SETPATH}; \ source f${BAND}.shparms; \ nice -n 19 PZCurvHistogram @M3stackdump \ -input ${FULSEGPREFIX} \ -maxSegs ${MAXFULHISSEGS} \ -chainDir ${CURVEDIR} -chainPrefix f \ -band ${BAND} -extension ".fcv" \ -maxCurv ${MAXCURV} \ -sigmaCurv ${SIGMACURV} -fractalDim ${FRACTALDIM} \ -output ${FULHISPREFIX} ${FULHISPREFIX}-plain.eps: ${FULHISPREFIX}-plain.plt ${SCRIPTDIR}/draw-curvature-histogram \ ${MAXCURV} \ ${FULHISPREFIX}-plain.plt \ ${FULHISPREFIX}-plain.eps \ "lambda = ${BAND} plain" ifeq "${SHOWHIS}" "TRUE" ghostview ${FULHISPREFIX}-plain.eps endif ${FULHISPREFIX}-squeezed.eps: ${FULHISPREFIX}-squeezed.plt ${SCRIPTDIR}/draw-curvature-histogram \ 1.2 \ ${FULHISPREFIX}-squeezed.plt \ ${FULHISPREFIX}-squeezed.eps \ "lambda = ${BAND} squeezed" ifeq "${SHOWHIS}" "TRUE" ghostview ${FULHISPREFIX}-squeezed.eps endif # ---------------------------------------------------------------------- # Get "straight" (low curvature) outline segments at appropriate scale # Prefix for straight-segment files INISTRPREFIX := f${BAND}-str ${INISTRPREFIX}.seg: \ ${CURVEDIR}/${ABIGCURVE}/f${BAND}.flc f${BAND}.shparms \ ${PROGDIR}/PZGetStraightSegs @echo "${CURVEDIR}/????/f${BAND}.fcv -> ${INISTRPREFIX}.seg" -/bin/rm -f ${INISTRPREFIX}.seg ${SETPATH}; \ source f${BAND}.shparms; \ nice PZGetStraightSegs @M3stackdump \ -chainDir ${CURVEDIR} -chainPrefix f \ -nCurves ${NCURVES} \ -band ${BAND} -step $$step \ -output ${INISTRPREFIX} \ -minLength 10 \ -blurFactor ${BLURFACTOR} \ -minCurvature $$minCurvature \ -printSegs 100 endif # ......................................................................